Partager via


Types de signets

Tous les signets dans ODBC 3.x sont des signets de longueur variable. Cela permet à une clé primaire ou à un index unique associé à une table d’être utilisé comme signet. Le signet peut également être une valeur 32 bits, telle qu’elle a été utilisée dans ODBC 2.x. Pour spécifier qu’un signet est utilisé avec un curseur, une application ODBC 3.x définit l’attribut d’instruction SQL_ATTR_USE_BOOKMARK sur SQL_UB_VARIABLE. Un signet de longueur variable est automatiquement utilisé.

Une application peut appeler SQLColAttribute avec l’argument FieldIdentifier défini sur SQL_DESC_OCTET_LENGTH pour obtenir la longueur du signet. Étant donné qu’un signet de longueur variable peut être une valeur longue, une application ne doit pas être liée à la colonne 0, sauf si elle utilise le signet pour la plupart des lignes de l’ensemble de lignes.

Les signets de longueur fixe sont pris en charge uniquement pour la compatibilité descendante. Si une application ODBC 2.x fonctionnant avec un pilote ODBC 3.x appelle SQLSetStmtOption pour définir SQL_USE_BOOKMARKS sur SQL_UB_ON, elle est mappée dans le Gestionnaire de pilotes à SQL_UB_VARIABLE. Un signet de longueur variable est utilisé, même si seulement 32 bits de celui-ci sont remplis. Si un pilote prend en charge les signets de longueur fixe, il prend en charge les signets de longueur variable. Si une application ODBC 3.x fonctionnant avec un pilote ODBC 2.x appelle SQLSetStmtAttr pour définir SQL_ATTR_USE_BOOKMARKS sur SQL_UB_VARIABLE, elle est mappée dans le Gestionnaire de pilotes à SQL_UB_ON et un signet de longueur fixe 32 bits est utilisé. L’attribut d’instruction SQL_ATTR_FETCH_BOOKMARK_PTR doit ensuite pointer vers un signet 32 bits. Si les signets utilisés sont plus longs que 32 bits, par exemple lorsque les clés primaires sont utilisées comme signets, le curseur doit mapper les valeurs réelles à des valeurs 32 bits. Elle peut, par exemple, générer une table de hachage d’entre elles. Lorsqu’une application ODBC 3.x fonctionnant avec un pilote ODBC 2.x lie un signet, la longueur de la mémoire tampon doit être 4.