Tipos de marcador
Todos los marcadores de ODBC 3.x son marcadores de longitud variable. Esto permite usar una clave principal o un índice único asociado a una tabla como marcador. El marcador también puede ser un valor de 32 bits, como se usó en ODBC 2.x. Para especificar que se use un marcador con un cursor, una aplicación de ODBC 3.x establece el atributo de instrucción SQL_ATTR_USE_BOOKMARK en SQL_UB_VARIABLE. Automáticamente se usa un marcador de longitud variable.
Una aplicación puede llamar a SQLColAttribute con el argumento FieldIdentifier establecido en SQL_DESC_OCTET_LENGTH para obtener la longitud del marcador. Dado que un marcador de longitud variable puede ser un valor largo, las aplicaciones no deben realizar un enlace a la columna 0 a menos que usen el marcador para muchas de las filas del conjunto de filas.
Los marcadores de longitud fija solo se admiten para la compatibilidad con versiones anteriores. Si una aplicación de ODBC 2.x que trabaja con un controlador ODBC 3.x llama a SQLSetStmtOption para establecer SQL_USE_BOOKMARKS en SQL_UB_ON, se asigna en el Administrador de controladores a SQL_UB_VARIABLE. Se usa un marcador de longitud variable, incluso si solo se rellenan 32 bits. Si un controlador admite marcadores de longitud fija, admitirá marcadores de longitud variable. Si una aplicación de ODBC 3.x que trabaja con un controlador ODBC 2.x llama a SQLSetStmtAttr para establecer SQL_ATTR_USE_BOOKMARKS en SQL_UB_VARIABLE, se asigna en el Administrador de controladores a SQL_UB_VARIABLE y se usa un marcador de longitud fija de 32 bits. El atributo de instrucción SQL_ATTR_FETCH_BOOKMARK_PTR debe apuntar a un marcador de 32 bits. Si los marcadores usados tienen más de 32 bits, como cuando se usan claves principales como marcadores, el cursor debe asignar los valores reales a valores de 32 bits. Por ejemplo, podría crear una tabla hash a partir de estos. Cuando una aplicación de ODBC 3.x que trabaja con un controlador ODBC 2.x enlaza un marcador, la longitud del búfer debe ser 4.