SQLSetScrollOptions 對應

當應用程式透過 ODBC 3.x 驅動程式呼叫 SQLSetScrollOptions 且驅動程式不支援 SQLSetScrollOptions 時,呼叫

SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)  

將會產生下列結果:

  • 對 的呼叫

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

    InfoType 引數設定為下表中的其中一個值,視 SQLSetScrollOptions 中的 KeysetSize 引數值 而定。

    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 中並行引數的值 ,驗證呼叫 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

    如果並行自 變數不是上表中的其中一個值,則對 SQLSetScrollOptions 的呼叫 會傳回 SQLSTATE S1108 (超出範圍的並行選項),而且不會執行下列步驟。 如果 * InfoValuePtr 中未將適當的位 (如上表所示) 設定為對應 至 Concurrency 引數的其中一個值,則對 SQLSetScrollOptions 的呼叫 會傳回 SQLSTATE S1C00 (驅動程式無法執行),而且不會執行下列步驟。

  • 對 的呼叫

    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 中的 並行 引數。

  • 如果對 SQLSetScrollOptions 呼叫 中的 KeysetSize 引數為正數,則呼叫

    SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)  
    

    *ValuePtr 設定為 SQLSetScrollOptions 中的 KeysetSize 引數。

  • 對 的呼叫

    SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)  
    

    *ValuePtr 設定為 SQLSetScrollOptions 中的 RowsetSize 引數。

    注意

    當 Driver Manager 將 SQLSetScrollOptions 對應給使用不支援 SQLSetScrollOptions 之 ODBC 3.x 驅動程式的應用程式時,Driver Manager 會將 SQL_ROWSET_SIZE 語句選項,而不是 SQL_ATTR_ROW_ARRAY_SIZE 語句屬性,設定為 SQLSetScrollOption 中的 RowsetSize 引數。 因此,呼叫 SQLFetch 或 SQLFetchScroll 應用程式無法使用 SQLSetScrollOptions 。 只有當呼叫 SQLExtendedFetch 擷取多個資料列時,才能使用它。