Apa yang Dilakukan Driver

Tabel berikut ini meringkas fungsi dan pernyataan apa yang harus diterapkan driver ODBC 3.x untuk kursor yang dapat diblokir dan dapat digulir.

Fungsi atau

atribut pernyataan
Komentar
SQL_ATTR_ROW_STATUS_PTR Mengatur alamat array status baris yang diisi oleh SQLFetch dan SQLFetchScroll. Array ini juga diisi oleh SQLSetPos jika SQLSetPos dipanggil dalam status pernyataan S6. Jika SQLSetPos dipanggil dalam status S7, array ini tidak diisi tetapi array yang diarahkan oleh argumen RowStatusArray dari SQLExtendedFetch diisi. Untuk informasi selengkapnya, lihat Transisi Pernyataan di Lampiran B: Tabel Transisi Status ODBC.
SQL_ATTR_ROWS_FETCHED_PTR Mengatur alamat buffer tempat SQLFetch dan SQLFetchScroll mengembalikan jumlah baris yang diambil. Jika SQLExtendedFetch dipanggil, buffer ini tidak diisi tetapi argumen RowCountPtr menunjuk ke jumlah baris yang diambil.
SQL_ATTR_ROW_ARRAY_SIZE Mengatur ukuran set baris yang digunakan oleh SQLFetch dan SQLFetchScroll.
SQL_ROWSET_SIZE Mengatur ukuran set baris yang digunakan oleh SQLExtendedFetch. Driver ODBC 3.x menerapkan ini jika mereka ingin bekerja dengan aplikasi ODBC 2.x yang memanggil SQLExtendedFetch atau SQLSetPos.
SQLBulkOperations Jika driver ODBC 3.x harus bekerja dengan aplikasi ODBC 2.x yang menggunakan SQLSetPos dengan Operasi SQL_ADD, driver harus mendukung SQLSetPos dengan Operasi SQL_ADD selain SQLBulkOperations dengan Operasi SQL_ADD.
SQLExtendedFetch Mengembalikan set baris yang ditentukan. Driver ODBC 3.x menerapkan ini jika mereka ingin bekerja dengan aplikasi ODBC 2.x yang memanggil SQLExtendedFetch atau SQLSetPos. Berikut ini adalah detail implementasi:

- Driver mengambil ukuran set baris dari nilai atribut pernyataan SQL_ROWSET_SIZE.
- Driver mengambil alamat array status baris dari argumen RowStatusArray , bukan atribut pernyataan SQL_ATTR_ROW_STATUS_PTR. Argumen RowStatusArray dalam panggilan ke SQLExtendedFetch tidak boleh berupa pointer null. (Perhatikan bahwa dalam ODBC 3.x, atribut pernyataan SQL_ATTR_ROW_STATUS_PTR dapat berupa pointer null.)
- Driver mengambil alamat baris yang diambil buffer dari argumen RowCountPtr , bukan atribut pernyataan SQL_ATTR_ROWS_FETCHED_PTR.
- Driver mengembalikan SQLSTATE 01S01 (Kesalahan berturut-turut) untuk menunjukkan bahwa kesalahan telah terjadi saat baris diambil oleh panggilan ke SQLExtendedFetch. Driver ODBC 3.x harus mengembalikan SQLSTATE 01S01 (Kesalahan berturut-turut) hanya ketika SQLExtendedFetch dipanggil, bukan ketika SQLFetch atau SQLFetchScroll dipanggil. Untuk mempertahankan kompatibilitas mundur, ketika SQLSTATE 01S01 (Kesalahan berturut-turut) dikembalikan oleh SQLExtendedFetch, Manajer Driver tidak memesan rekaman status dalam antrean kesalahan sesuai dengan aturan yang dinyatakan di bagian "Urutan Rekaman Status" dari SQLGetDiagField.
SQLFetch Mengembalikan set baris berikutnya. Berikut ini adalah detail implementasi:

- Driver mengambil ukuran set baris dari nilai atribut pernyataan SQL_ATTR_ROW_ARRAY_SIZE.
- Driver mengambil alamat array status baris dari atribut pernyataan SQL_ATTR_ROW_STATUS_PTR.
- Driver mengambil alamat baris yang diambil buffer dari atribut pernyataan SQL_ATTR_ROWS_FETCHED_PTR.
- Aplikasi ini dapat mencampur panggilan antara SQLFetchScroll dan SQLFetch.
- SQLFetch mengembalikan marka buku jika kolom 0 terikat.
- SQLFetch dapat dipanggil untuk mengembalikan lebih dari satu baris.
- Driver tidak mengembalikan SQLSTATE 01S01 (Kesalahan berturut-turut) untuk menunjukkan bahwa kesalahan telah terjadi saat baris diambil oleh panggilan ke SQLFetch.
SQLFetchScroll Mengembalikan set baris yang ditentukan. Berikut ini adalah detail implementasi:

- Driver mengambil ukuran set baris dari atribut pernyataan SQL_ATTR_ROW_ARRAY_SIZE.
- Driver mengambil alamat array status baris dari atribut pernyataan SQL_ATTR_ROW_STATUS_PTR.
- Driver mengambil alamat baris yang diambil buffer dari atribut pernyataan SQL_ATTR_ROWS_FETCHED_PTR.
- Aplikasi ini dapat mencampur panggilan antara SQLFetchScroll dan SQLFetch.
- Driver tidak mengembalikan SQLSTATE 01S01 (Kesalahan berturut-turut) untuk menunjukkan bahwa kesalahan telah terjadi saat baris diambil oleh panggilan ke SQLFetchScroll.
SQLSetPos Melakukan berbagai operasi yang diposisikan. Berikut ini adalah detail implementasi:

- Ini dapat dipanggil dalam pernyataan menyatakan S6 atau S7. Untuk detail selengkapnya, lihat Transisi Pernyataan di Lampiran B: Tabel Transisi Status ODBC.
- Jika ini dipanggil dalam status pernyataan S5 atau S6, driver mengambil ukuran set baris dari atribut pernyataan SQL_ATTR_ROWS_FETCHED_PTR dan alamat array status baris dari atribut pernyataan SQL_ATTR_ROW_STATUS_PTR.
- Jika ini disebut dalam status pernyataan S7, driver mengambil ukuran set baris dari atribut pernyataan SQL_ROWSET_SIZE dan alamat array status baris dari argumen RowStatusArray dari SQLExtendedFetch.
- Driver mengembalikan SQLSTATE 01S01 (Kesalahan berturut-turut) hanya untuk menunjukkan bahwa kesalahan telah terjadi saat baris diambil oleh panggilan ke SQLSetPos untuk melakukan operasi massal ketika fungsi dipanggil dalam status S7. Untuk mempertahankan kompatibilitas mundur, jika SQLSTATE 01S01 (Kesalahan berturut-turut) dikembalikan oleh SQLSetPos, Manajer Driver tidak memesan rekaman status dalam antrean kesalahan sesuai dengan aturan yang dinyatakan di bagian "Urutan Rekaman Status" dari SQLGetDiagField.
- Jika driver harus bekerja dengan aplikasi ODBC 2.x yang memanggil SQLSetPos dengan argumen Operasi SQL_ADD, driver harus mendukung SQLSetPos dengan argumen Operasi SQL_ADD.