Compartilhar via


Alterações comportamentais

Mudanças comportamentais são aquelas mudanças para as quais a sintaxe da interface permanece a mesma, mas asemântica mudou. Para essas alterações, a funcionalidade usada no ODBC 2.x se comporta de forma diferente da mesma funcionalidade no ODBC 3.x.

Se um aplicativo exibe ODBC 2.x comportamento ou ODBC 3.O comportamento x é determinado pelo atributo de ambiente SQL_ATTR_ODBC_VERSION. Esse valor de 32 bits é definido como SQL_OV_ODBC2 para exibir ODBC 2.x comportamento e SQL_OV_ODBC3 para exibir ODBC 3.x comportamento.

O atributo SQL_ATTR_ODBC_VERSION environment é definido por uma chamada para SQLSetEnvAttr. Depois que um aplicativo chama SQLAllocHandle para alocar um identificador de ambiente, ele deve chamarSQLSetEnvAttr imediatamente para definir o comportamento que ele exibe. (Como resultado, há um novo estado de ambiente para descrever o identificador de ambiente em um estado alocado, mas sem versão.) Para obter mais informações, veja o Apêndice B: Tabelas de transição de estado ODBC.

Um aplicativo declara o comportamento que exibe com o atributo de ambiente SQL_ATTR_ODBC_VERSION, mas o atributo não tem efeito sobre a conexão do aplicativo com um driver ODBC 2.x ou ODBC 3.x. Um ODBC 3.x aplicativo pode se conectar a um driver ODBC 2.x ou 3.x, não importa qual seja a configuração do atributo de ambiente.

ODBC 3.x aplicativos nunca devem chamar SQLAllocEnv. Como resultado, se o Gerenciador de Driver receber uma chamada para SQLAllocEnv, ele reconhecerá o aplicativo como um apicativo ODBC 2.x.

O atributo SQL_ATTR_ODBC_VERSION afeta três aspectos diferentes do comportamento de um driver ODBC 3.x:

  • SQLSTATEs

  • Tipos de dados para data, hora e carimbo de data/hora

  • O argumento CatalogName em SQLTables aceita padrões de pesquisa no ODBC 3.x, mas não no ODBC 2.x

A configuração do atributo de ambiente SQL_ATTR_ODBC_VERSION não afeta SQLSetParam ou SQLBindParam. SQLColAttribute também não é afetado por esse bit. Embora SQLColAttribute retorne atributos que são afetados pela versão do ODBC (tipo de data, precisão, escala e comprimento), o comportamento pretendido é determinado pelo valor do argumento FieldIdentifier. Quando FieldIdentifier é igual a SQL_DESC_TYPE, SQLColAttribute retorna o ODBC 3.x códigos para data, hora e carimbo de data/hora; quando FieldIdentifier é igual a SQL_COLUMN_TYPE, SQLColAttribute retorna o ODBC 2.x códigos para data, hora e carimbo de data/hora.

Esta seção contém os tópicos a seguir.