Tipi di segnalibro

Tutti i segnalibri in ODBC 3.x sono segnalibri a lunghezza variabile. Questo consente di usare una chiave primaria o un indice univoco associato a una tabella come segnalibro. Il segnalibro può essere anche un valore a 32 bit, come era usato in ODBC 2.x. Per specificare che un segnalibro viene utilizzato con un cursore, un'applicazione ODBC 3.x imposta l'attributo di istruzione SQL_ATTR_USE_BOOKMARK su SQL_UB_VARIABLE. Viene usato automaticamente un segnalibro a lunghezza variabile.

Un'applicazione può chiamare SQLColAttribute con l'argomento FieldIdentifier impostato su SQL_DESC_OCTET_LENGTH per ottenere la lunghezza del segnalibro. Poiché un segnalibro a lunghezza variabile può essere un valore lungo, un'applicazione non deve essere associata alla colonna 0, a meno che non usi il segnalibro per molte delle righe nel set di righe.

I segnalibri a lunghezza fissa sono supportati solo per la compatibilità con le versioni precedenti. Se un'applicazione ODBC 2.x che utilizza un driver ODBC 3.x chiama SQLSetStmtOption per impostare SQL_USE_BOOKMARKS su SQL_UB_ON, viene eseguito il mapping in Gestione driver a SQL_UB_VARIABLE. Viene usato un segnalibro a lunghezza variabile, anche se ne vengono popolati solo 32 bit. Se un driver supporta segnalibri a lunghezza fissa, supporterà segnalibri a lunghezza variabile. Se un'applicazione ODBC 3.x che utilizza un driver ODBC 2.x chiama SQLSetStmtAttr per impostare SQL_ATTR_USE_BOOKMARKS su SQL_UB_VARIABLE, viene eseguito il mapping in Gestione driver a SQL_UB_ON e viene usato un segnalibro 32 bit a lunghezza fissa. L'attributo dell'istruzione SQL_ATTR_FETCH_BOOKMARK_PTR deve quindi puntare a un segnalibro a 32 bit. Se i segnalibri usati sono più lunghi di 32 bit, ad esempio quando vengono usate come segnalibri le chiavi primarie, il cursore deve eseguire il mapping dei valori effettivi ai valori a 32 bit. Potrebbe, ad esempio, compilare una relativa tabella hash. Quando un'applicazione ODBC 3.x che utilizza un driver ODBC 2.x associa un segnalibro, la lunghezza del buffer deve essere 4.