SQLSetScrollOptions のマッピング
アプリケーションが ODBC 3.x ドライバーを介して SQLSetScrollOptions を呼び出し、ドライバーが SQLSetScrollOptions をサポートしていない場合、 の呼び出し
SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)
結果は次のようになります。
の呼び出し
SQLGetInfo(ConnectionHandle, InfoType, InfoValuePtr, BufferLength, StringLengthPtr)
SQLSetScrollOptions の KeysetSize 引数の値に応じて、InfoType 引数を次の表のいずれかの値に設定します。
KeysetSize 引数 InfoType 引数 SQL_SCROLL_FORWARD_ONLY SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 SQL_SCROLL_STATIC SQL_STATIC_CURSOR_ATTRIBUTES2 SQL_SCROLL_KEYSET_DRIVEN SQL_KEYSET_CURSOR_ATTRIBUTES2 SQL_SCROLL_DYNAMIC SQL_DYNAMIC_CURSOR_ATTRIBUTES2 RowsetSize 引数より大きい値 SQL_KEYSET_CURSOR_ATTRIBUTES2 KeysetSize 引数の値が前の表に記載されていない場合、SQLSetScrollOptions の呼び出しは SQLSTATE S1107 (行の値が範囲外) を返し、次の手順は実行されません。
次に、ドライバー マネージャーは、SQLSetScrollOptions の Concurrency 引数の値に従って、SQLGetInfo の呼び出しによって返される *InfoValuePtr 値に適切なビットが設定されているかどうかを確認します。
コンカレンシー 引数 InfoType の設定 SQL_CONCUR_READ_ONLY SQL_CA2_READ_ONLY_CONCURRENCY SQL_CONCUR_LOCK SQL_CA2_LOCK_CONCURRENCY SQL_CONCUR_ROWVER SQL_CA2_ROWVER_CONCURRENCY SQL_CONCUR_VALUES SQL_CA2_VALUES_CONCURRENCY Concurrency 引数が前の表の値の 1 つでない場合、SQLSetScrollOptions の呼び出しは SQLSTATE S1108 (コンカレンシー オプションが範囲外) を返し、次の手順は実行されません。 適切なビット (前の表に示すように) が *InfoValuePtr で Concurrency 引数に対応する値のいずれかに設定されていない場合、 SQLSetScrollOptions の呼び出しは SQLSTATE S1C00 (Driver not capable) を返し、次の手順は実行されません。
の呼び出し
SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)
SQLSetScrollOptions の KeysetSize 引数の値に従って、*ValuePtr を次の表のいずれかの値に設定します。
KeysetSize 引数 *ValuePtr SQL_SCROLL_FORWARD_ONLY SQL_CURSOR_FORWARD_ONLY SQL_SCROLL_STATIC SQL_CURSOR_STATIC SQL_SCROLL_KEYSET_DRIVEN SQL_CURSOR_KEYSET_DRIVEN SQL_SCROLL_DYNAMIC SQL_CURSOR_DYNAMIC RowsetSize 引数より大きい値 SQL_CURSOR_KEYSET_DRIVEN の呼び出し
SQLSetStmtAttr(StatementHandle, SQL_ATTR_CONCURRENCY, ValuePtr, 0)
*ValuePtr をSQLSetScrollOptions の Concurrency 引数に設定します。
SQLSetScrollOptions の呼び出しの KeysetSize 引数が正の場合、 の呼び出し
SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)
*ValuePtr をSQLSetScrollOptions の KeysetSize 引数に設定します。
の呼び出し
SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)
*ValuePtr をSQLSetScrollOptions の RowsetSize 引数に設定します。
Note
ドライバー マネージャーは、SQLSetScrollOptions をサポートしていない ODBC 3.x ドライバーを操作するアプリケーションの SQLSetScrollOptions をマップすると、ドライバー マネージャーは、SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性ではなく、SQL_ROWSET_SIZE ステートメント オプションを SQLSetScrollOption の RowsetSize 引数に設定します。 その結果、SQLSetScrollOptions は、SQLFetch または SQLFetchScroll の呼び出しによって複数の行をフェッチするときに、アプリケーションで使用できません。 SQLExtendedFetch の呼び出しによって複数の行をフェッチする場合にのみ使用できます。