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 擷取多個資料列時,才能使用它。