다음을 통해 공유


드라이버 관리자가 수행하는 작업

다음 표에서는 ODBC 3.x 드라이버 관리자가 ODBC 2.x 및 ODBC 3.x 드라이버에 호출을 매핑하는 방법을 요약합니다.

함수 또는

statement 특성
주석
SQL_ATTR_FETCH_BOOKMARK_PTR SQLFetchScroll사용할 책갈피를 가리킵니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 이를 설정하면 ODBC 3.x 드라이버 관리자가 이를 캐시합니다. 나중에 애플리케이션에서 SQLFetchScroll을 호출할 때 포인터를 역참조하고 SQLExtendedFetchFetchOffset 인수에서 ODBC 2.x 드라이버에 값을 전달합니다.
- 애플리케이션이 ODBC 3.x 드라이버에서 이를 설정하면 ODBC 3.x 드라이버 관리자가 드라이버에 호출을 전달합니다.
SQL_ATTR_ROW_STATUS_PTR SQLFetch, SQLFetchScroll, SQLBulkOperations 및 SQLSetPos로 채워진 행 상태 배열을 가리킵니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 이 값을 설정하면 ODBC 3.x 드라이버 관리자가 해당 값을 캐시합니다. SQLFetchScroll 또는 SQLFetch가 호출되면 SQLExtendedFetch의 RowStatusArray 인수에 있는 ODBC 2.x 드라이버에 이 값을 전달합니다.
- 애플리케이션이 ODBC 3.x 드라이버에서 이를 설정하면 ODBC 3.x 드라이버 관리자가 드라이버에 호출을 전달합니다.
- S6 상태에서 애플리케이션이 SQL_ATTR_ROW_STATUS_PTR 설정한 다음 SQLFetch 또는 SQLFetchScroll을 먼저 호출하지 않고 SQLBulkOperations(SQL_ADD 작업 사용) 또는 SQLSetPos를 호출하면 SQLSTATE HY011(지금은 특성을 설정할 수 없음)이 반환됩니다.
SQL_ATTR_ROWS_FETCHED_PTR SQLFetchSQLFetchScroll가져온 행 수를 반환하는 버퍼를 가리킵니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 이 값을 설정하면 ODBC 3.x 드라이버 관리자가 해당 값을 캐시합니다. 애플리케이션에서 SQLFetch 또는 SQLFetchScroll을 호출할 때 SQLExtendedFetchRowCountPtr 인수에서 이 값을 ODBC 2.x 드라이버에 전달합니다.
- 애플리케이션이 ODBC 3.x 드라이버에서 이를 설정하면 ODBC 3.x 드라이버 관리자가 드라이버에 호출을 전달합니다.
SQL_ATTR_ROW_ARRAY_SIZE 행 집합 크기를 설정합니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 이를 설정하는 경우 ODBC 3.x 드라이버 관리자는 이를 SQL_ROWSET_SIZE 문 특성에 매핑합니다.
- 애플리케이션이 ODBC 3.x 드라이버에서 이를 설정하면 ODBC 3.x 드라이버 관리자가 드라이버에 호출을 전달합니다.
- ODBC 3.x 드라이버로 작업하는 애플리케이션이 SQLSetScrollOptions를 호출하는 경우 기본 드라이버가 SQLSetScrollOptions를 지원하지 않는 경우 SQL_ROWSET_SIZE RowsetSize 인수의 값으로 설정됩니다.
SQL_ROWSET_SIZE ODBC 2.x 애플리케이션에서 SQLExtendedFetch를 호출할 때 SQLExtendedFetch에서 사용하는 행 집합 크기를 설정합니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 이를 설정하면 ODBC 3.x 드라이버 관리자가 드라이버 버전에 관계없이 드라이버에 호출을 전달합니다.
- ODBC 2.x 드라이버로 작업하는 애플리케이션이 SQLSetScrollOptions를 호출하면 SQL_ROWSET_SIZE RowsetSize 인수의 값으로 설정됩니다.
SQLBulkOperations 삽입 작업을 수행하거나 책갈피 작업을 통해 업데이트, 삭제 또는 페치합니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 SQL_ADD 연산사용하여 SQLBulkOperations를 호출하는 경우 ODBC 3.x 드라이버 관리자는 SQL_ADD 연산을 사용하여 SQLSetPos매핑합니다.
- SQL_ADD 작업으로 SQLSetPos를 지원하지 않는 ODBC 2.x 드라이버로 작업하는 경우 ODBC 3.x 드라이버 관리자는 SQL_ADD 작업으로 SQLSetPos를 SQL_ADD 작업으로 SQLBulkOperations매핑하지 않습니다. 이는 ODBC 2.x에서 SQLSetPos를 호출할 수 있는 유일한 상태인 S7 상태에서 SQLBulkOperations를 호출할 수 없기 때문입니다.
- 애플리케이션이 SQLFetchScroll을 호출하기 전에 ODBC 2.x 드라이버에서 SQL_ADD 작업으로 SQLBulkOperations 를 호출하면 ODBC 3.x 드라이버 관리자가 오류를 반환합니다.
SQLExtendedFetch 지정된 행 집합을 반환합니다. 방금 언급한 제한을 제외하고 ODBC 3.x 드라이버 관리자는 드라이버 버전에 관계없이 SQLExtendedFetch에 대한 호출을 드라이버에 전달합니다.
SQLFetch 다음 행 집합을 반환합니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 SQLFetch를 호출하면 ODBC 3.x 드라이버 관리자가 SQLExtendedFetch매핑합니다. SQLExtendedFetchFetchOrientation 인수는 SQL_FETCH_NEXT 설정됩니다. 드라이버 관리자는 RowStatusArray 인수에 대해 SQL_ATTR_ROW_STATUS_PTR 문 특성의 캐시된 값과 RowCountPtr 인수에 대한 SQL_ATTR_ROWS_FETCHED_PTR 문 특성의 캐시된 값을 사용합니다.
- 애플리케이션이 ODBC 2.x 드라이버에서 호출할 때 ODBC 3.x 드라이버 관리자가 SQLFetch를 SQLExtendedFetch에 매핑하기 때문에 ODBC 3.x 애플리케이션은 ODBC 2.x 드라이버에서 SQLFetch 및 SQLFetchScroll 호출을 혼합할 수 있습니다.
- ODBC 2.x 드라이버가 SQLExtendedFetch를 지원하지 않는 경우 애플리케이션이 해당 드라이버에서 호출할 때 ODBC 3.x 드라이버 관리자는 SQLFetch 또는 SQLFetchScroll 을 SQLExtendedFetch에 매핑하지 않습니다. 애플리케이션이 SQL_ATTR_ROW_ARRAY_SIZE 1보다 큰 값으로 설정하려고 하면 SQLSTATE HYC00(선택적 기능이 구현되지 않음)이 반환됩니다.
- 방금 언급한 제한을 제외하고 ODBC 3.x 드라이버 관리자는 드라이버 버전에 관계없이 SQLFetch에 대한 호출을 드라이버에 전달합니다.
SQLFetchScroll 지정된 행 집합을 반환합니다. 구현 세부 정보는 다음과 같습니다.

- 애플리케이션이 ODBC 2.x 드라이버에서 SQLFetchScroll을 호출하는 경우 ODBC 3.x 드라이버 관리자는 SQLExtendedFetch매핑합니다. RowStatusArray 인수에 대해 SQL_ATTR_ROW_STATUS_PTR 문 특성의 캐시된 값과 RowCountPtr 인수에 대한 SQL_ATTR_ROWS_FETCHED_PTR 문 특성의 캐시된 값을 사용합니다. SQLFetchScrollFetchOrientation 인수가 SQL_FETCH_BOOKMARK 경우 FetchOffset 인수에 대해 SQL_ATTR_FETCH_BOOKMARK_PTR 문 특성의 캐시된 값을 사용하고 SQLFetchScrollFetchOffset 인수가 0이 아니면 오류를 반환합니다.
- 애플리케이션이 ODBC 3.x 드라이버에서 이 호출을 호출하면 ODBC 3.x 드라이버 관리자가 드라이버에 호출을 전달합니다.
Sqlsetpos 다양한 위치 작업을 수행합니다. ODBC 3.x 드라이버 관리자는 드라이버 버전에 관계없이 SQLSetPos에 대한 호출을 드라이버에 전달합니다.
SQLSetScrollOptions 드라이버 관리자가 SQLSetScrollOptions를 지원하지 않는 ODBC 3.x 드라이버로 작업하는 애플리케이션에 대해 SQLSetScrollOptions를 매핑하면 드라이버 관리자는 SQL_ATTR_ROW_ARRAY_SIZE 문 특성이 아닌 SQL_ROWSET_SIZE 문 옵션을 SQLSetScrollOptionRowsetSize 인수로 설정합니다. 따라서 SQLFetch 또는 SQLFetchScroll을 호출하여 여러 행을 가져올 때 애플리케이션에서 SQLSetScrollOptions를 사용할 수 없습니다. SQLExtendedFetch를 호출하여 여러 행을 페치할 때만 사용할 수 있습니다.