준비된 명령문 실행
prepare 키워드는 문자열로부터 SQL문을 생성합니다. 그 후에는 다른 데이터 액세스 명령문을 사용하여 준비된 명령문을 실행할 수 있습니다.
명시 SQL 코드 대신 준비된 명령문을 사용하면 반복해서 사용하는 데이터 액세스 조작의 성능을 향상시킬 수 있습니다. 준비된 명령문을 작성하면 데이터베이스는 해당 명령문에 필요한 대부분의 처리를 미리 수행합니다. 데이터베이스는 이를 통해 준비된 명령문을 실행할 때 수행해야 되는 처리의 양을 줄입니다. 사용자가 준비된 명령문을 사용할지, 또는 명시 SQL을 사용할지는 데이터 액세스 조작을 사용하는 횟수에 따라 달라집니다.
function executeExplicitSQL()
myCustomers myCustomers[0];
get myCustomers with #sql{
SELECT CUSTOMER_ID, LAST_NAME
FROM MYSCHEMA.MYTABLE
};
end
function executePreparedStatement()
myCustomers myCustomers[0];
prepare myStatement from
"SELECT CUSTOMER_ID, LAST_NAME FROM MYSCHEMA.MYTABLE";
get myCustomers with myStatement;
end
앞서 제시된 예제에서는 준비된 명령문을 실행하는 데 get 문을 사용했으나 execute 또는 open을 사용할 수도 있습니다. 각각의 경우 준비된 명령문은 데이터 액세스 명령문에 대해 적합해야 합니다. 즉, 문자열을 명시 SQL로 실행할 수 있는 경우에는 문자열을 준비된 명령문으로 준비하여 실행할 수도 있습니다. prepare는 SELECT와 같은 표준 SQL문, 변수를 포함하는 동적 SQL문 및 스토어드 프로시저에 대한 호출에 사용할 수 있습니다.
명령문 준비 및 실행
myString string = "SELECT ";
myString += "CUSTOMER_ID, LAST_NAME ";
myString += "FROM MYSCHEMA.MYTABLE";
그 후 prepare를 사용하여 이 변수로부터 준비된 명령문을 작성하고 명령문을 새 ID에 지정하십시오.
prepare myStatement from myString;
myCustomer myCustomers;
prepare myStatement2 from myString for myCustomer;
myCustomerArray myCustomers[];
get myCustomerArray with myStatement2;
준비된 명령문에 변수 사용
준비된 명령문은 변수를 삽입할 경우 더욱 유용합니다. 사용자는 준비된 명령문의 변수를 사용함으로써 단순히 EGL 변수 값을 삽입하는 것 뿐만 아니라, 동적 명령문이 사용하는 변수를 변경할 수 있으므로 준비된 명령문의 변수는 일반 명시 SQL 코드의 호스트 변수보다 더 큰 영향력을 갖습니다.
myCustomerID int = 5;
myCustomerArray myCustomers[];
myHostVarString string = "SELECT CUSTOMER_ID, LAST_NAME";
myHostVarString += " FROM MYSCHEMA.MYTABLE";
myHostVarString += " WHERE CUSTOMER_ID = ?";
prepare myStatement from myHostVarString;
get myCustomerArray with myHostVarString using myCustomerID;
이 경우에는 using myCustomerID 절을 변경하여 다른 상황에 다른 변수를 사용할 수 있습니다. 자세한 준비된 명령문 작성
EGL은 prepare 문 및 관련 execute, get 또는 open 문을 작성하는 도구 또한 제공합니다.
- 로직 파트에 있는 함수 내에서 빈 행을 마우스 오른쪽 단추로 클릭한 후 SQL Prepare 문 추가를 클릭하십시오. SQL Prepare 문 추가 창이 열립니다.
- 준비된 명령문 ID 필드에서 EGL prepare 문을 식별하는 이름을 입력하십시오. 규칙에 대해서는 EGL 언어 참조의 "이름 지정 규칙"을 참조하십시오.
- SQL 레코드 변수 이름 필드에서는 목록에서 레코드 변수를 선택하거나, 새 변수의 이름을 입력한 후 찾아보기 단추를 사용하여 SQL 레코드 파트를 선택하십시오. 최종적으로는 EGL 소스 코드에 해당 이름을 사용하여 SQL 레코드 변수를 정의해야 합니다.
- 실행 명령문 유형 필드에서 execute,get 또는 open을 선택하십시오.
- 실행 명령문 유형 필드에서 open을 선택한 경우에는 결과 세트 ID 필드에 결과 세트의 ID를 입력하십시오.
- 확인을 클릭하십시오. EGL이 prepare 문 및 관련 데이터 액세스 명령문을 작성합니다.