다음을 통해 공유


직접 실행 ODBC

직접 실행은 문을 실행하는 가장 간단한 방법입니다. 실행을 위해 문이 제출되면 데이터 원본은 이를 액세스 계획으로 컴파일한 다음 해당 액세스 계획을 실행합니다.

직접 실행은 일반적으로 런타임에 문을 빌드하고 실행하는 제네릭 애플리케이션에서 사용됩니다. 예를 들어 다음 코드는 SQL 문을 빌드하고 한 번 실행합니다.

SQLCHAR *SQLStatement;  
  
// Build a SQL statement.  
BuildStatement(SQLStatement);  
  
// Execute the statement.  
SQLExecDirect(hstmt, SQLStatement, SQL_NTS);  

직접 실행은 한 번 실행되는 문에 가장 적합합니다. 주요 단점은 SQL 문이 실행될 때마다 구문 분석된다는 것입니다. 또한 애플리케이션은 문이 실행될 때까지 문(있는 경우)에서 만든 결과 집합에 대한 정보를 검색할 수 없습니다. 문이 준비되고 두 개의 별도 단계로 실행되는 경우 가능합니다.

문을 직접 실행하기 위해 애플리케이션은 다음 작업을 수행합니다.

  1. 매개 변수의 값을 설정합니다. 자세한 내용은 이 섹션의 뒷부분에 있는 문 매개 변수를 참조하세요.

  2. SQLExecDirect를 호출하고 SQL 문을 포함하는 문자열을 전달합니다.

  3. SQLExecDirect가 호출되면 드라이버는 다음과 같습니다.

    • 문을 구문 분석하지 않고 데이터 원본의 SQL 문법을 사용하도록 SQL 문을 수정합니다. 여기에는 ODBC의 이스케이프 시퀀스에서 설명하는 이스케이프 시퀀스 바꾸기가 포함됩니다. 애플리케이션은 SQLNativeSql을 호출하여 SQL 문의 수정된 형식을 검색할 수 있습니다. 이스케이프 시퀀스는 SQL_ATTR_NOSCAN 문 특성이 설정된 경우 대체되지 않습니다.

    • 현재 매개 변수 값을 검색하고 필요에 따라 변환합니다. 자세한 내용은 이 섹션의 뒷부분에 있는 문 매개 변수를 참조하세요.

    • 실행을 위해 문 및 변환된 매개 변수 값을 데이터 원본으로 보냅니다.

    • 오류를 반환합니다. 여기에는 SQLSTATE 24000(잘못된 커서 상태), SQLSTATE 42000과 같은 구문 오류(구문 오류 또는 액세스 위반), SQLSTATE 42S02와 같은 의미 체계 오류(기본 테이블 또는 뷰를 찾을 수 없음)와 같은 시퀀싱 또는 상태 진단이 포함됩니다.