Jenis Marka buku

Semua marka buku di ODBC 3.x adalah marka buku panjang variabel. Ini memungkinkan kunci primer atau indeks unik yang terkait dengan tabel untuk digunakan sebagai marka buku. Bookmark juga dapat berupa nilai 32-bit, seperti yang digunakan dalam ODBC 2.x. Untuk menentukan bahwa bookmark digunakan dengan kursor, aplikasi ODBC 3.x mengatur atribut pernyataan SQL_ATTR_USE_BOOKMARK ke SQL_UB_VARIABLE. Bookmark panjang variabel digunakan secara otomatis.

Aplikasi dapat memanggil SQLColAttribute dengan argumen FieldIdentifier diatur ke SQL_DESC_OCTET_LENGTH untuk mendapatkan panjang bookmark. Karena bookmark panjang variabel bisa menjadi nilai panjang, aplikasi tidak boleh mengikat ke kolom 0 kecuali akan menggunakan marka buku untuk banyak baris dalam set baris.

Marka buku panjang tetap hanya didukung untuk kompatibilitas mundur. Jika aplikasi ODBC 2.x yang bekerja dengan driver ODBC 3.x memanggil SQLSetStmtOption untuk mengatur SQL_USE_BOOKMARKS ke SQL_UB_ON, itu dipetakan di Driver Manager ke SQL_UB_VARIABLE. Bookmark panjang variabel digunakan, bahkan jika hanya 32 bit yang diisi. Jika driver mendukung marka buku panjang tetap, driver akan mendukung marka buku panjang variabel. Jika aplikasi ODBC 3.x yang bekerja dengan driver ODBC 2.x memanggil SQLSetStmtAttr untuk mengatur SQL_ATTR_USE_BOOKMARKS ke SQL_UB_VARIABLE, itu dipetakan di Driver Manager ke SQL_UB_ON dan bookmark panjang tetap 32-bit digunakan. Atribut pernyataan SQL_ATTR_FETCH_BOOKMARK_PTR kemudian harus menunjuk ke bookmark 32-bit. Jika marka buku yang digunakan lebih panjang dari 32 bit, seperti ketika kunci primer digunakan sebagai marka buku, kursor harus memetakan nilai aktual ke nilai 32-bit. Ini bisa, misalnya, membangun tabel hash dari mereka. Ketika aplikasi ODBC 3.x yang bekerja dengan driver ODBC 2.x mengikat bookmark, panjang buffer harus 4.