Compartilhar via


Alterações comportamentais

Alterações comportamentais são as alterações para as quais a sintaxe da interface permanece a mesma, mas a semântica foi alterada. 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 exibe comportamento ODBC 2.x ou ODBC 3.x, isso é determinado pelo atributo de ambiente SQL_ATTR_ODBC_VERSION. Esse valor de 32 bits é definido como SQL_OV_ODBC2 para exibir o comportamento do ODBC 2.x e como SQL_OV_ODBC3 para exibir o comportamento do ODBC 3.x.

O atributo de ambiente SQL_ATTR_ODBC_VERSION é 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 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, consulte Apêndice B: Tabelas de Transição de Estado ODBC.

Um aplicativo indica qual comportamento ele exibe com o atributo de ambiente SQL_ATTR_ODBC_VERSION, mas o atributo não tem efeito na conexão do aplicativo com um ODBC 2. x ou ODBC 3. x driver. Um aplicativo ODBC 3.x pode se conectar a um driver ODBC 2.x ou 3.x, independentemente da 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 ODBC 2. x aplicativo.

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 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 esse bit. Embora SQLColAttribute retorne atributos 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.