Compartilhar via


Tipos de indicador

Todos os indicadores no ODBC 3.x são indicadores de comprimento variável. Isso permite que uma chave primária ou um índice exclusivo associado a uma tabela seja usado como um indicador. O indicador também pode ser um valor de 32 bits, como o que foi usado no ODBC 2.x. Para especificar que um indicador é usado com um cursor, um aplicativo do ODBC 3.x define o atributo da instrução SQL_ATTR_USE_BOOKMARK como SQL_UB_VARIABLE. Um indicador de comprimento variável é automaticamente usado.

Um aplicativo pode chamar SQLColAttribute com o argumento FieldIdentifier definido como SQL_DESC_OCTET_LENGTH para obter o comprimento do indicador. Como um indicador de comprimento variável pode ser um valor longo, um aplicativo não deve se vincular à coluna 0, a menos que use o indicador para muitas das linhas no conjunto de linhas.

Os marcadores de comprimento fixo tem suporte apenas para compatibilidade com versões anteriores. Se um aplicativo ODBC 2.x que funciona com um driver ODBC 3.x chama SQLSetStmtOption para definir SQL_USE_BOOKMARKS para SQL_UB_ON, ele é mapeado no Gerenciador de Driver como SQL_UB_VARIABLE. Um indicador de comprimento variável é usado, mesmo que apenas 32 bits dele sejam preenchidos. Se um driver for compatível com indicadores de comprimento fixo, ele será compatível com indicadores de comprimento variável. Se um aplicativo ODBC 3.x que funciona com um driver ODBC 2.x chama SQLSetStmtAttr para definir SQL_ATTR_USE_BOOKMARKS para SQL_UB_VARIABLE, ele é mapeado no Gerenciador de Driver como SQL_UB_ON e um indicador de comprimento fixo de 32 bits é usado. O atributo de instrução SQL_ATTR_FETCH_BOOKMARK_PTR deve apontar para um indicador de 32 bits. Se os indicadores usados forem maiores que 32 bits, como quando chaves primárias são usadas como indicadores, o cursor deve mapear os valores reais para valores de 32 bits. Poderia, por exemplo, criar uma tabela de hash deles. Quando um aplicativo ODBC 3.x que funciona com um driver ODBC 2.x vincula um indicador, o comprimento do buffer deve ser 4.