驅動程式管理員的用途

下表摘要說明 ODBC 3.x 驅動程式管理員如何將呼叫對應至 ODBC 2.x 和 ODBC 3.x 驅動程式。

函式或

陳述式屬性
註解
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 指向由 SQLFetchSQLFetchScrollSQLBulkOperationsSQLSetPos 填滿的資料列狀態陣列。 下列是實作詳細資料:

- 當應用程式在 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,然後呼叫 SQLBulkOperations (具有 SQL_ADD 的作業 )或 SQLSetPos 而不先呼叫 SQLFetch SQLFetchScroll ,則會傳回 SQLSTATE HY011 (現在無法設定屬性)。
SQL_ATTR_ROWS_FETCHED_PTR 指向 SQLFetchSQLFetchScroll 將擷取的資料列數目傳回的緩衝區。 下列是實作詳細資料:

- 當應用程式在 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
- 使用不支援 SQLSetPos 的 ODBC 2.x 驅動程式搭配 SQL_ADD 作業 時,ODBC 3.x 驅動程式管理員不會將 SQLSetPos SQL_ADD 作業 對應 具有 SQL_ADD 作業 的 SQLBulkOperations 這是因為 SQLBulkOperations 無法在狀態 S7 中呼叫,在 ODBC 2.x 中是唯一可以呼叫 SQLSetPos 的狀態
- 如果應用程式在呼叫 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。 Driver Manager 會針對 RowStatusArray 引數使用 SQL_ATTR_ROW_STATUS_PTR 語句屬性 的快取值,以及 RowCountPtr 引數之 SQL_ATTR_ROWS_FETCHED_PTR 語句屬性的 快取值。
- ODBC 3.x 應用程式可以混合對 ODBC 2.x 驅動程式中 SQLFetch SQLFetchScroll 的呼叫 ,因為 ODBC 3.x 驅動程式管理員會在應用程式在 ODBC 2.x 驅動程式中呼叫 SQLFetch 時,將 SQLFetch 對應 SQLExtendedFetch
- 如果 ODBC 2.x 驅動程式不支援 SQLExtendedFetch ,當應用程式在該驅動程式中呼叫 SQLFetch 時,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 Driver Manager 都會將呼叫傳遞給 驅動程式的 SQLSetPos
SQLSetScrollOptions 當 Driver Manager 將 SQLSetScrollOptions 對應給使用不支援 SQLSetScrollOptions 之 ODBC 3.x 驅動程式的應用程式時,Driver Manager 會將 SQL_ROWSET_SIZE 語句選項,而不是 SQL_ATTR_ROW_ARRAY_SIZE 語句屬性,設定為 SQLSetScrollOption 中的 RowsetSize 引數。 因此,呼叫 SQLFetch 或 SQLFetchScroll 應用程式無法使用 SQLSetScrollOptions 。 只有當呼叫 SQLExtendedFetch 擷取多個資料列時,才能使用它。