드라이버 관리자가 수행하는 작업
다음 표에서는 ODBC 3.x 드라이버 관리자가 ODBC 2.x 및 ODBC 3.x 드라이버에 호출을 매핑하는 방법을 요약합니다.
함수 또는 statement 특성 |
주석 |
---|---|
SQL_ATTR_FETCH_BOOKMARK_PTR | SQLFetchScroll에 사용할 책갈피를 가리킵니다. 구현 세부 정보는 다음과 같습니다. - 애플리케이션이 ODBC 2.x 드라이버에서 이를 설정하면 ODBC 3.x 드라이버 관리자가 이를 캐시합니다. 나중에 애플리케이션에서 SQLFetchScroll을 호출할 때 포인터를 역참조하고 SQLExtendedFetch의 FetchOffset 인수에서 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 | SQLFetch 및 SQLFetchScroll이 가져온 행 수를 반환하는 버퍼를 가리킵니다. 구현 세부 정보는 다음과 같습니다. - 애플리케이션이 ODBC 2.x 드라이버에서 이 값을 설정하면 ODBC 3.x 드라이버 관리자가 해당 값을 캐시합니다. 애플리케이션에서 SQLFetch 또는 SQLFetchScroll을 호출할 때 SQLExtendedFetch의 RowCountPtr 인수에서 이 값을 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에 매핑합니다. SQLExtendedFetch의 FetchOrientation 인수는 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 문 특성의 캐시된 값을 사용합니다. SQLFetchScroll의 FetchOrientation 인수가 SQL_FETCH_BOOKMARK 경우 FetchOffset 인수에 대해 SQL_ATTR_FETCH_BOOKMARK_PTR 문 특성의 캐시된 값을 사용하고 SQLFetchScroll의 FetchOffset 인수가 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 문 옵션을 SQLSetScrollOption의 RowsetSize 인수로 설정합니다. 따라서 SQLFetch 또는 SQLFetchScroll을 호출하여 여러 행을 가져올 때 애플리케이션에서 SQLSetScrollOptions를 사용할 수 없습니다. SQLExtendedFetch를 호출하여 여러 행을 페치할 때만 사용할 수 있습니다. |