Типы закладок

Все закладки в ODBC 3.x — это закладки переменной длины. Это позволяет использовать первичный ключ или уникальный индекс, связанный с таблицей, в качестве закладки. Закладка также может быть 32-разрядным значением, как и в ODBC 2.x. Чтобы указать, что закладка используется с курсором, приложение ODBC 3.x задает атрибут инструкции SQL_ATTR_USE_BOOKMARK для SQL_UB_VARIABLE. Закладка переменной длины используется автоматически.

Приложение может вызывать SQLColAttribute с аргументом FieldIdentifier , равным SQL_DESC_OCTET_LENGTH, чтобы получить длину закладки. Так как закладка переменной длины может быть длинной, приложение не должно привязаться к столбцу 0, если он не будет использовать закладку для многих строк в наборе строк.

Закладки фиксированной длины поддерживаются только для обратной совместимости. Если приложение ODBC 2.x, работающее с драйвером ODBC 3.x, вызывает SQLSetStmtOption для задания SQL_USE_BOOKMARKS SQL_UB_ON, оно сопоставляется в диспетчере драйверов с SQL_UB_VARIABLE. Используется закладка переменной длины, даже если заполнены только 32 бита. Если драйвер поддерживает закладки фиксированной длины, он будет поддерживать закладки переменной длины. Если приложение ODBC 3.x, работающее с драйвером ODBC 2.x, вызывает SQLSetStmtAttr для задания SQL_ATTR_USE_BOOKMARKS SQL_UB_VARIABLE, оно сопоставляется в диспетчере драйверов с SQL_UB_ON и используется 32-разрядная закладка фиксированной длины. Затем атрибут оператора SQL_ATTR_FETCH_BOOKMARK_PTR должен указывать на 32-разрядную закладку. Если используемые закладки длиннее 32 бита, например при использовании первичных ключей в качестве закладок, курсор должен сопоставить фактические значения с 32-разрядными значениями. Это может, например, создать хэш-таблицу из них. Если приложение ODBC 3.x, работающее с драйвером ODBC 2.x, привязывает закладку, длина буфера должна быть 4.