다음을 통해 공유


드라이버의 기능

다음 표에는 블록 및 스크롤 가능한 커서에 대해 ODBC 3.x 드라이버가 구현해야 하는 함수 및 문 특성이 요약되어 있습니다.

함수 또는

statement 특성
주석
SQL_ATTR_ROW_STATUS_PTR SQLFetch 및 SQLFetchScroll채워진 행 상태 배열의 주소를 설정합니다. SQLSetPos가 문 상태 S6에서 호출되는 경우에도 이 배열은 SQLSetPos에 의해 채워집니다. S7 상태에서 SQLSetPos를 호출하는 경우 이 배열은 채워지지 않지만 SQLExtendedFetchRowStatusArray 인수가 가리키는 배열이 채워집니다. 자세한 내용은 부록 B: ODBC 상태 전환 테이블의 문 전환을 참조하세요.
SQL_ATTR_ROWS_FETCHED_PTR SQLFetchSQLFetchScroll가져온 행 수를 반환하는 버퍼의 주소를 설정합니다. SQLExtendedFetch가 호출되면 이 버퍼는 채워지지 않지만 RowCountPtr 인수는 페치된 행 수를 가리킵니다.
SQL_ATTR_ROW_ARRAY_SIZE SQLFetch 및 SQLFetchScroll에서 사용하는 행 집합 크기를 설정합니다.
SQL_ROWSET_SIZE SQLExtendedFetch에서 사용하는 행 집합 크기를 설정합니다. ODBC 3.x 드라이버는 SQLExtendedFetch 또는 SQLSetPos를 호출하는 ODBC 2.x 애플리케이션에서 작업하려는 경우 이를 구현합니다.
SQLBulkOperations ODBC 3.x 드라이버가 SQL_ADD 작업과 함께 SQLSetPos를 사용하는 ODBC 2.x 애플리케이션에서 작동해야 하는 경우 드라이버는 SQL_ADD 연산이 있는 SQLBulkOperations 외에도 SQL_ADD 작업으로 SQLSetPos를 지원해야 합니다.
SQLExtendedFetch 지정된 행 집합을 반환합니다. ODBC 3.x 드라이버는 SQLExtendedFetch 또는 SQLSetPos를 호출하는 ODBC 2.x 애플리케이션에서 작업하려는 경우 이를 구현합니다. 구현 세부 정보는 다음과 같습니다.

- 드라이버는 SQL_ROWSET_SIZE 문 특성의 값에서 행 집합 크기를 검색합니다.
- 드라이버는 SQL_ATTR_ROW_STATUS_PTR 문 특성이 아닌 RowStatusArray 인수에서 행 상태 배열의 주소를 검색합니다. SQLExtendedFetch 호출의 RowStatusArray 인수는 null 포인터가 아니어야 합니다. (ODBC 에서는3.x, SQL_ATTR_ROW_STATUS_PTR 문 특성은 null 포인터일 수 있습니다.)
- 드라이버는 SQL_ATTR_ROWS_FETCHED_PTR 문 특성이 아니라 RowCountPtr 인수에서 가져온 행 버퍼의 주소를 검색합니다.
- 드라이버는 SQLSTATE 01S01(행 오류)을 반환하여 SQLExtendedFetch 호출로 행을 가져오는 동안 오류가 발생했음을 나타냅니다. ODBC 3.x 드라이버는 SQLFetch 또는 SQLFetchScroll이 호출되는 경우가 아니라 SQLExtendedFetch가 호출되는 경우에만 SQLSTATE 01S01(행 오류)을 반환해야 합니다. 이전 버전과의 호환성을 유지하기 위해 SQLExtendedFetch에서 SQLSTATE 01S01(행 오류)을 반환하는 경우 드라이버 관리자는 SQLGetDiagField의 "상태 레코드 시퀀스" 섹션에 명시된 규칙에 따라 오류 큐의 상태 레코드를 정렬하지 않습니다.
SQLFetch 다음 행 집합을 반환합니다. 구현 세부 정보는 다음과 같습니다.

- 드라이버는 SQL_ATTR_ROW_ARRAY_SIZE 문 특성의 값에서 행 집합 크기를 검색합니다.
- 드라이버는 SQL_ATTR_ROW_STATUS_PTR 문 특성에서 행 상태 배열의 주소를 검색합니다.
- 드라이버는 SQL_ATTR_ROWS_FETCHED_PTR 문 특성에서 가져온 행 버퍼의 주소를 검색합니다.
- 애플리케이션은 SQLFetchScroll과 SQLFetch 간의 호출을 혼합할 수 있습니다.
- 열 0이 바인딩된 경우 SQLFetch 는 책갈피를 반환합니다.
- 둘 이상의 행을 반환하기 위해 SQLFetch 를 호출할 수 있습니다.
- 드라이버는 SQLSTATE 01S01(행의 오류)을 반환하지 않아 SQLFetch 호출로 행을 가져오는 동안 오류가 발생했음을 나타냅니다.
SQLFetchScroll 지정된 행 집합을 반환합니다. 구현 세부 정보는 다음과 같습니다.

- 드라이버는 SQL_ATTR_ROW_ARRAY_SIZE 문 특성에서 행 집합 크기를 검색합니다.
- 드라이버는 SQL_ATTR_ROW_STATUS_PTR 문 특성에서 행 상태 배열의 주소를 검색합니다.
- 드라이버는 SQL_ATTR_ROWS_FETCHED_PTR 문 특성에서 가져온 행 버퍼의 주소를 검색합니다.
- 애플리케이션은 SQLFetchScroll과 SQLFetch 간의 호출을 혼합할 수 있습니다.
- 드라이버는 SQLSTATE 01S01(행 오류)을 반환하지 않아 SQLFetchScroll 호출로 행을 가져오는 동안 오류가 발생했음을 나타냅니다.
Sqlsetpos 다양한 위치 작업을 수행합니다. 구현 세부 정보는 다음과 같습니다.

- 문 상태 S6 또는 S7에서 호출할 수 있습니다. 자세한 내용은 부록 B: ODBC 상태 전환 테이블의 문 전환을 참조하세요.
- 문 상태 S5 또는 S6에서 호출되는 경우 드라이버는 SQL_ATTR_ROWS_FETCHED_PTR 문 특성에서 행 집합 크기와 SQL_ATTR_ROW_STATUS_PTR 문 특성에서 행 상태 배열의 주소를 검색합니다.
- 문 상태 S7에서 호출되는 경우 드라이버는 SQL_ROWSET_SIZE 문 특성에서 행 집합 크기와 SQLExtendedFetch의 RowStatusArray 인수에서 행 상태 배열의 주소를 검색합니다.
- 드라이버는 SQLSTATE 01S01(행 오류)을 반환하여 함수가 상태 S7에서 호출될 때 대량 작업을 수행하기 위해 SQLSetPos 를 호출하여 행을 가져오는 동안 오류가 발생했음을 나타냅니다. 이전 버전과의 호환성을 유지하기 위해 SQLSetPos에서 SQLSTATE 01S01(행 오류)을 반환하는 경우 드라이버 관리자는 SQLGetDiagField의 "상태 레코드 시퀀스" 섹션에 명시된 규칙에 따라 오류 큐의 상태 레코드를 정렬하지 않습니다.
- 드라이버가 SQL_ADD 작업 인수를 사용하여 SQLSetPos를 호출하는 ODBC 2.x 애플리케이션에서 작업해야 하는 경우 드라이버는 SQL_ADD Operation 인수를 사용하여 SQLSetPos지원해야 합니다.