SQLSetScrollOptions Mapping
Ketika aplikasi memanggil SQLSetScrollOptions melalui driver ODBC 3.x dan driver tidak mendukung SQLSetScrollOptions, panggilan ke
SQLSetScrollOptions(StatementHandle, Concurrency, KeysetSize, RowsetSize)
akan menghasilkan sebagai berikut:
Panggilan ke
SQLGetInfo(ConnectionHandle, InfoType, InfoValuePtr, BufferLength, StringLengthPtr)
dengan argumen InfoType diatur ke salah satu nilai dalam tabel berikut, bergantung pada nilai argumen KeysetSize di SQLSetScrollOptions.
Argumen KeysetSize Argumen 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 Nilai yang lebih besar dari argumen RowsetSize SQL_KEYSET_CURSOR_ATTRIBUTES2 Jika nilai argumen KeysetSize tidak tercantum dalam tabel sebelumnya, panggilan ke SQLSetScrollOptions mengembalikan SQLSTATE S1107 (Nilai baris di luar rentang) dan tidak ada langkah-langkah berikut yang dilakukan.
Driver Manager kemudian memverifikasi apakah bit yang sesuai diatur dalam nilai *InfoValuePtr yang dikembalikan oleh panggilan ke SQLGetInfo, sesuai dengan nilai argumen Konkurensi di SQLSetScrollOptions.
Argumen konkurensi Pengaturan 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 Jika argumen Konkurensi bukan salah satu nilai dalam tabel sebelumnya, panggilan ke SQLSetScrollOptions mengembalikan SQLSTATE S1108 (opsi Konkurensi di luar rentang) dan tidak ada langkah-langkah berikut yang dilakukan. Jika bit yang sesuai (seperti yang ditunjukkan dalam tabel sebelumnya) tidak diatur dalam *InfoValuePtr ke salah satu nilai yang terkait dengan argumen Konkurensi , panggilan ke SQLSetScrollOptions mengembalikan SQLSTATE S1C00 (Driver tidak mampu) dan tidak ada langkah-langkah berikut yang dilakukan.
Panggilan ke
SQLSetStmtAttr(StatementHandle, SQL_ATTR_CURSOR_TYPE, ValuePtr, 0)
dengan *ValuePtr diatur ke salah satu nilai dalam tabel berikut, sesuai dengan nilai argumen KeysetSize di SQLSetScrollOptions.
Argumen 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 Nilai yang lebih besar dari argumen RowsetSize SQL_CURSOR_KEYSET_DRIVEN Panggilan ke
SQLSetStmtAttr(StatementHandle, SQL_ATTR_CONCURRENCY, ValuePtr, 0)
dengan *ValuePtr diatur ke argumen Konkurensi di SQLSetScrollOptions.
Jika argumen KeysetSize dalam panggilan ke SQLSetScrollOptions positif, panggilan ke
SQLSetStmtAttr(StatementHandle, SQL_ATTR_KEYSET_SIZE, ValuePtr, 0)
dengan *ValuePtr diatur ke argumen KeysetSize di SQLSetScrollOptions.
Panggilan ke
SQLSetStmtAttr(StatementHandle, SQL_ROWSET_SIZE, ValuePtr, 0)
dengan *ValuePtr diatur ke argumen RowsetSize di SQLSetScrollOptions.
Catatan
Ketika Manajer Driver memetakan SQLSetScrollOptions untuk aplikasi yang bekerja dengan driver ODBC 3.x yang tidak mendukung SQLSetScrollOptions, Manajer Driver mengatur opsi pernyataan SQL_ROWSET_SIZE, bukan atribut pernyataan SQL_ATTR_ROW_ARRAY_SIZE, ke argumen RowsetSize di SQLSetScrollOption. Akibatnya, SQLSetScrollOptions tidak dapat digunakan oleh aplikasi saat mengambil beberapa baris dengan panggilan ke SQLFetch atau SQLFetchScroll. Ini hanya dapat digunakan saat mengambil beberapa baris dengan panggilan ke SQLExtendedFetch.