Partilhar via


Mudanças Comportamentais

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

Se um aplicativo apresenta comportamento ODBC 2.x ou comportamento ODBC 3.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 chamar SQLSetEnvAttr imediatamente para definir o comportamento que 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, consulte o Apêndice B: Tabelas de transição de estado ODBC.

Um aplicativo declara qual comportamento ele 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 ODBC 2. x ou ODBC 3. x motorista. Um ODBC 3.x aplicação pode ligar-se a um ODBC 2.x ou 3.x controlador, independentemente da configuração do atributo de ambiente.

ODBC 3. x aplicativos nunca devem chamar SQLAllocEnv. Como resultado, se o Gerenciador de Driver recebe uma chamada para SQLAllocEnv, ele reconhece o aplicativo como um ODBC 2. x aplicação.

O atributo SQL_ATTR_ODBC_VERSION afeta três aspetos diferentes do comportamento de um controlador ODBC 3.x.

  • SQLSTATEs

  • Tipos de dados para data, hora e timestamp

  • O argumento CatalogName no 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 este 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 os códigos ODBC 3.x para data, hora e carimbo de data/hora; quando FieldIdentifier é igual a SQL_COLUMN_TYPE, SQLColAttribute retorna os códigos ODBC 2.x para data, hora e carimbo de data/hora.

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