SQLSetScrollOptions のマッピング

アプリケーションが ODBC 3.x ドライバーを介して SQLSetScrollOptions を呼び出し、ドライバーが SQLSetScrollOptions をサポートしていない場合、 の呼び出し

SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)  

結果は次のようになります。

  • の呼び出し

    SQLGetInfo(ConnectionHandle, InfoType, InfoValuePtr, BufferLength, StringLengthPtr)  
    

    SQLSetScrollOptionsKeysetSize 引数の値に応じて、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 (行の値が範囲外) を返し、次の手順は実行されません。

    次に、ドライバー マネージャーは、SQLSetScrollOptionsConcurrency 引数の値に従って、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 (コンカレンシー オプションが範囲外) を返し、次の手順は実行されません。 適切なビット (前の表に示すように) が *InfoValuePtrConcurrency 引数に対応する値のいずれかに設定されていない場合、 SQLSetScrollOptions の呼び出しは SQLSTATE S1C00 (Driver not capable) を返し、次の手順は実行されません。

  • の呼び出し

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)  
    

    SQLSetScrollOptionsKeysetSize 引数の値に従って、*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 をSQLSetScrollOptionsConcurrency 引数に設定します。

  • SQLSetScrollOptions の呼び出しの KeysetSize 引数が正の場合、 の呼び出し

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)  
    

    *ValuePtr をSQLSetScrollOptionsKeysetSize 引数に設定します。

  • の呼び出し

    SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)  
    

    *ValuePtr をSQLSetScrollOptionsRowsetSize 引数に設定します。

    Note

    ドライバー マネージャーは、SQLSetScrollOptions をサポートしていない ODBC 3.x ドライバーを操作するアプリケーションの SQLSetScrollOptions をマップすると、ドライバー マネージャーは、SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性ではなく、SQL_ROWSET_SIZE ステートメント オプションを SQLSetScrollOptionRowsetSize 引数に設定します。 その結果、SQLSetScrollOptions は、SQLFetch または SQLFetchScroll の呼び出しによって複数の行をフェッチするときに、アプリケーションで使用できません。 SQLExtendedFetch の呼び出しによって複数の行をフェッチする場合にのみ使用できます。