포함된 SQL 예제
다음 코드는 C로 작성된 간단한 포함된 SQL 프로그램입니다. 이 프로그램은 포함된 SQL 기법 중 전부는 아니지만 많은 방법을 보여 줍니다. 이 프로그램은 사용자에게 주문 번호를 묻는 메시지를 표시하고, 주문의 고객 번호, 영업 사원 및 상태 검색하고, 검색된 정보를 화면에 표시합니다.
int main() {
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
int OrderID; /* Employee ID (from user) */
int CustID; /* Retrieved customer ID */
char SalesPerson[10] /* Retrieved salesperson name */
char Status[6] /* Retrieved order status */
EXEC SQL END DECLARE SECTION;
/* Set up error processing */
EXEC SQL WHENEVER SQLERROR GOTO query_error;
EXEC SQL WHENEVER NOT FOUND GOTO bad_number;
/* Prompt the user for order number */
printf ("Enter order number: ");
scanf_s("%d", &OrderID);
/* Execute the SQL query */
EXEC SQL SELECT CustID, SalesPerson, Status
FROM Orders
WHERE OrderID = :OrderID
INTO :CustID, :SalesPerson, :Status;
/* Display the results */
printf ("Customer number: %d\n", CustID);
printf ("Salesperson: %s\n", SalesPerson);
printf ("Status: %s\n", Status);
exit();
query_error:
printf ("SQL error: %ld\n", sqlca->sqlcode);
exit();
bad_number:
printf ("Invalid order number.\n");
exit();
}
이 프로그램에 대해 다음 사항에 유의하세요.
호스트 변수 호스트 변수는 BEGIN DECLARE SECTION 및 END DECLARE SECTION 키워드(keyword) 묶은 섹션에서 선언됩니다. 각 호스트 변수 이름은 포함된 SQL 문에 나타날 때 콜론(:) 접두사로 지정됩니다. 콜론을 사용하면 사전 컴파일러가 동일한 이름의 호스트 변수와 테이블 및 열과 같은 데이터베이스 개체를 구분할 수 있습니다.
데이터 형식 DBMS 및 호스트 언어에서 지원하는 데이터 형식은 매우 다를 수 있습니다. 이는 이중 역할을 하므로 호스트 변수에 영향을 줍니다. 한편, 호스트 변수는 호스트 언어 문에 의해 선언되고 조작되는 프로그램 변수입니다. 반면에 포함된 SQL 문에서 데이터베이스 데이터를 검색하는 데 사용됩니다. DBMS 데이터 형식에 해당하는 호스트 언어 형식이 없는 경우 DBMS는 자동으로 데이터를 변환합니다. 그러나 각 DBMS에는 변환 프로세스와 관련된 고유한 규칙 및 특이성이 있으므로 호스트 변수 형식을 신중하게 선택해야 합니다.
DBMS 처리 오류는 SQL 통신 영역 또는 SQLCA를 통해 애플리케이션 프로그램에 런타임 오류를 보고합니다. 앞의 코드 예제에서 첫 번째 포함된 SQL 문은 INCLUDE SQLCA입니다. 그러면 프로그램에 SQLCA 구조를 포함하도록 미리 컴파일러에 지시합니다. 이는 프로그램이 DBMS에서 반환된 오류를 처리할 때마다 필요합니다. 언제든... GOTO 문은 오류가 발생할 때 특정 레이블에 분기하는 오류 처리 코드를 생성하도록 미리 컴파일러에 지시합니다.
Singleton SELECT 데이터를 반환하는 데 사용되는 문은 단일 SELECT 문입니다. 즉, 단일 데이터 행만 반환합니다. 따라서 코드 예제에서는 커서를 선언하거나 사용하지 않습니다.