다음을 통해 공유


포함된 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 키워드로 묶인 섹션에서 선언됩니다. 각 호스트 변수 이름은 포함된 SQL 문에 나타날 때 콜론(:) 접두사로 지정됩니다. 콜론을 사용하면 사전 컴파일러가 동일한 이름의 호스트 변수와 테이블 및 열과 같은 데이터베이스 개체를 구분할 수 있습니다.

  • 데이터 형식 DBMS 및 호스트 언어에서 지원하는 데이터 형식은 매우 다를 수 있습니다. 이는 이중 역할을 하므로 호스트 변수에 영향을 줍니다. 한편, 호스트 변수는 호스트 언어 문에 의해 선언되고 조작되는 프로그램 변수입니다. 반면에 포함된 SQL 문에서 데이터베이스 데이터를 검색하는 데 사용됩니다. DBMS 데이터 형식에 해당하는 호스트 언어 형식이 없는 경우 DBMS는 자동으로 데이터를 변환합니다. 그러나 각 DBMS에는 변환 프로세스와 관련된 고유한 규칙 및 특이성이 있으므로 호스트 변수 형식을 신중하게 선택해야 합니다.

  • DBMS 처리 오류는 SQL 통신 영역 또는 SQLCA를 통해 애플리케이션 프로그램에 런타임 오류를 보고합니다. 앞의 코드 예제에서 첫 번째 포함된 SQL 문은 INCLUDE SQLCA입니다. 그러면 프로그램에 SQLCA 구조를 포함하도록 미리 컴파일러에 지시합니다. 이는 프로그램이 DBMS에서 반환된 오류를 처리할 때마다 필요합니다. 언제든... GOTO 문은 오류가 발생할 때 특정 레이블에 분기하는 오류 처리 코드를 생성하도록 미리 컴파일러에 지시합니다.

  • Singleton SELECT 데이터를 반환하는 데 사용되는 문은 단일 SELECT 문입니다. 즉, 단일 데이터 행만 반환합니다. 따라서 코드 예제에서는 커서를 선언하거나 사용하지 않습니다.