문 핸들
문은 SELECT * FROM Employee과 같은 SQL 문으로 가장 쉽게 생각할 수 있습니다. 그러나 문은 단순히 SQL 문 이상이며 문 실행에 사용되는 문 및 매개 변수에 의해 생성된 결과 집합과 같이 해당 SQL 문과 관련된 모든 정보로 구성됩니다. 문에는 애플리케이션 정의 SQL 문이 필요하지도 않습니다. 예를 들어 SQLTables와 같은 카탈로그 함수가 문에서 실행되면 테이블 이름 목록을 반환하는 미리 정의된 SQL 문을 실행합니다.
각 문은 문 핸들로 식별됩니다. 문은 단일 연결과 연결되며 해당 연결에 여러 문이 있을 수 있습니다. 일부 드라이버는 지원하는 활성 문의 수를 제한합니다. SQLGetInfo의 SQL_MAX_CONCURRENT_ACTIVITIES 옵션은 드라이버가 단일 연결에서 지원하는 활성 문의 수를 지정합니다. 결과가 보류 중인 경우 문이 활성으로 정의됩니다. 여기서 결과는 결과 집합이거나 INSERT, UPDATE 또는 DELETE 문의 영향을 받는 행의 수이거나 SQLPutData에 대한 여러 호출을 통해 데이터를 전송합니다.
ODBC(드라이버 관리자 또는 드라이버)를 구현하는 코드 조각 내에서 문 핸들은 다음과 같은 문 정보를 포함하는 구조를 식별합니다.
문의 상태
현재 문 수준 진단
문의 매개 변수 및 결과 집합 열에 바인딩된 애플리케이션 변수의 주소
각 문 특성의 현재 설정
문 핸들은 대부분의 ODBC 함수에서 사용됩니다. 특히 함수에서 매개 변수 및 결과 집합 열(SQLBindParameter 및 SQLBindCol)을 바인딩하고, 문(SQLPrepare, SQLExecute 및 SQLExecDirect)을 준비 및 실행하고, 메타데이터(SQLColAttribute 및 SQLDescribeCol)를 검색하고, 결과(SQLFetch)를 가져오고, 진단(SQLGetDiagField 및 SQLGetDiagRec)를 검색하는 데 사용됩니다. 카탈로그 함수(SQLColumns, SQLTable 등) 및 여러 다른 함수에도 사용됩니다.
문 핸들은 SQLAllocHandle을 사용하여 할당되고 SQLFreeHandle을 사용하여 해제됩니다.