次の方法で共有


ドライバー マネージャーの機能

次の表は、ODBC 3.x ドライバー マネージャーが ODBC 2.x ドライバーと ODBC 3.x ドライバーに呼び出しをマップ する 方法をまとめたものです。

関数または

statement 属性
説明
SQL_ATTR_FETCH_BOOKMARK_PTR SQLFetchScroll で使用するブックマークをポイントします。 実装の詳細を次に示します。

- アプリケーションが ODBC 2.x ドライバーでこれを設定すると、ODBC 3.x Driver Manager によってキャッシュされます。 ポインターを逆参照し、SQLFetchScroll が後でアプリケーションによって呼び出されたときに、SQLExtendedFetchFetchOffset 引数で ODBC 2.x ドライバーに値を渡します。
- アプリケーションが ODBC 3.x ドライバーでこれを設定すると、ODBC 3.x ドライバー マネージャーはドライバーに呼び出しを渡します。
SQL_ATTR_ROW_STATUS_PTR SQLFetch、SQLFetchScrollSQLBulkOperationsSQLSetPos で入力された行ステータス配列を指します。 実装の詳細を次に示します。

- アプリケーションが ODBC 2.x ドライバーでこれを設定すると、ODBC 3.x Driver Manager によって値がキャッシュされます。 SQLFetchScroll または SQLFetch が呼び出されると、SQLExtendedFetchRowStatusArray 引数で ODBC 2.x ドライバーにこの値が渡されます。
- アプリケーションが ODBC 3.x ドライバーでこれを設定すると、ODBC 3.x ドライバー マネージャーはドライバーに呼び出しを渡します。
- 状態 S6 では、アプリケーションが SQL_ATTR_ROW_STATUS_PTRを設定し、最初に SQLFetch または SQLFetchScroll を呼び出さずに SQLBulkOperations (operation of SQL_ADD) または SQLSetPos を呼び出した場合、SQLSTATE HY011 (属性は現在設定できません) が返されます。
SQL_ATTR_ROWS_FETCHED_PTR SQLFetch と SQLFetchScroll がフェッチされた行数を返すバッファーを指します。 実装の詳細を次に示します。

- アプリケーションが ODBC 2.x ドライバーでこれを設定すると、ODBC 3.x Driver Manager によって値がキャッシュされます。 SQLFetch または SQLFetchScroll がアプリケーションによって呼び出されると、SQLExtendedFetchRowCountPtr 引数で ODBC 2.x ドライバーにこの値が渡されます。
- アプリケーションが ODBC 3.x ドライバーでこれを設定すると、ODBC 3.x ドライバー マネージャーはドライバーに呼び出しを渡します。
SQL_ATTR_ROW_ARRAY_SIZE 行セットのサイズを設定します。 実装の詳細を次に示します。

- アプリケーションが ODBC 2.x ドライバーでこれを設定すると、ODBC 3.x Driver Manager によって SQL_ROWSET_SIZE ステートメント属性にマップされます。
- アプリケーションが ODBC 3.x ドライバーでこれを設定すると、ODBC 3.x ドライバー マネージャーはドライバーに呼び出しを渡します。
- ODBC 3.x ドライバーを操作するアプリケーションが SQLSetScrollOptions を呼び出すと、基になるドライバーが SQLSetScrollOptions をサポートしていない場合、SQL_ROWSET_SIZEは RowsetSize 引数の値に設定されます。
SQL_ROWSET_SIZE SQLExtendedFetch が ODBC 2.x アプリケーションによって呼び出されたときに SQLExtendedFetch によって使用される行セット サイズを設定します。 実装の詳細を次に示します。

- アプリケーションでこれを設定すると、ODBC 3.x ドライバー マネージャーは、ドライバーのバージョンに関係なく、ドライバーに呼び出しを渡します。
- ODBC 2.x ドライバーを操作するアプリケーションが SQLSetScrollOptions を呼び出すと、SQL_ROWSET_SIZEは RowsetSize 引数の値に設定されます。
SQLBulkOperations ブックマーク操作によって挿入操作、更新、削除、フェッチを実行します。 実装の詳細を次に示します。

- アプリケーションが ODBC 2.x ドライバーで operation of SQL_ADD を使用して SQLBulkOperations を呼び出すと、ODBC 3.x Driver Manager によって、SQL_ADDの操作を使用して SQLSetPos にマップされます。
- SQL_ADD の操作SQLSetPos をサポートしていない ODBC 2.x ドライバーを操作する場合、ODBC 3.x ドライバー マネージャーは、SQL_ADDの操作を持つ SQLSetPos を SQL_ADD の操作を使用して SQLBulkOperations にマップしません。 これは、状態 S7 では SQLBulkOperations を呼び出すことができないためです。これは、ODBC 2.x では SQLSetPos を呼び出すことができる唯一の状態でした。
- アプリケーションで SQLFetchScroll を呼び出す前に、ODBC 2.x ドライバーで operation of SQL_ADD を指定して SQLBulkOperations を呼び出すと、ODBC 3.x Driver Manager はエラーを返します。
SQLExtendedFetch 指定した行セットを返します。 特に説明した制限を除き、ODBC 3.x Driver Manager は、ドライバーのバージョンに関係なく、 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 3.x ドライバー マネージャーは、アプリケーションが ODBC 2.x ドライバーで SQLFetch を呼び出すときに SQLFetchSQLExtendedFetch にマップするため、ODBC 3.x アプリケーションは ODBC 2.x ドライバーで SQLFetch と SQLFetchScroll の呼び出しを混在させることができます。
- ODBC 2.x ドライバーで SQLExtendedFetch がサポートされていない場合、ODBC 3.x ドライバー マネージャーは、アプリケーションがそのドライバーで SQLFetch または SQLFetchScrollSQLExtendedFetch にマップしません。 アプリケーションが SQL_ATTR_ROW_ARRAY_SIZE を 1 より大きい値に設定しようとすると、SQLSTATE HYC00 (省略可能な機能が実装されていません) が返されます。
- 記載されている制限を除き、ODBC 3.x Driver Manager は、ドライバーのバージョンに関係なく、 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 をマップすると、ドライバー マネージャーは、sqlSetScrollOptionRowsetSize 引数に、SQL_ATTR_ROW_ARRAY_SIZEステートメント属性ではなく、SQL_ROWSET_SIZE ステートメント オプションを設定します。 その結果、SQLSetScrollOptions は、SQLFetch または SQLFetchScroll の呼び出しによって複数の行をフェッチするときに、アプリケーションで使用できません。 SQLExtendedFetch の呼び出しによって複数の行をフェッチする場合にのみ使用できます。