Modifiche del comportamento

Le modifiche funzionali sono quelle per cui la sintassi dell'interfaccia rimane invariata, ma la semantica è cambiata. Per queste modifiche, le funzionalità usate in ODBC 2.x si comportano in modo diverso rispetto alle stesse funzionalità in ODBC 3.x.

Il fatto che un’applicazione presenti un comportamento ODBC 2.x o ODBC 3.X è determinato dall'attributo di ambiente SQL_ATTR_ODBC_VERSION. Questo valore a 32 bit è impostato su SQL_OV_ODBC2 per presentare un comportamento ODBC 2.x e SQL_OV_ODBC3 per presentare un comportamento ODBC 3.x.

L'attributo di ambiente SQL_ATTR_ODBC_VERSION viene impostato da una chiamata a SQLSetEnvAttr. Dopo che un'applicazione chiama SQLAllocHandle per allocare un handle di ambiente, deve chiamare immediatamente SQLSetEnvAttr per impostare il comportamento che presenta. Di conseguenza, esiste un nuovo stato di ambiente per descrivere l'handle dell'ambiente in uno stato allocato, ma senza versione. Per altre informazioni, vedere Appendice B: Tabelle di transizione di stato ODBC.

Un'applicazione indica il comportamento presentato con l'attributo di ambiente SQL_ATTR_ODBC_VERSION, ma l'attributo non ha alcun effetto sulla connessione dell'applicazione con il driver ODBC 2.x o ODBC 3.x. Un’applicazione ODBC 3.x può connettersi a un driver ODBC 2.x o 3.x, indipendentemente dall'impostazione dell'attributo di ambiente.

Le applicazioni ODBC 3.x non devono mai chiamare SQLAllocEnv. Di conseguenza, se Gestione driver riceve una chiamata a SQLAllocEnv, riconosce l'applicazione come applicazione ODBC 2.x.

L'attributo SQL_ATTR_ODBC_VERSION influisce su tre aspetti diversi del comportamento di un driver 3.x:

  • SQLSTATE

  • Tipi di dati per data, ora e timestamp

  • L'argomento CatalogName in SQLTables accetta modelli di ricerca in ODBC 3.x, ma non in ODBC 2.x

L'impostazione dell'attributo di ambiente SQL_ATTR_ODBC_VERSION non influisce su SQLSetParam o SQLBindParam. SQLColAttribute inoltre non è interessato da questo bit. Sebbene SQLColAttribute restituisca attributi interessati dalla versione di ODBC (tipo di data, precisione, dimensionamento e lunghezza), il comportamento previsto è determinato dal valore dell'argomento FieldIdentifier. Quando FieldIdentifier è uguale a SQL_DESC_TYPE, SQLColAttribute restituisce i codici ODBC 3.x per data, ora e timestamp. Quando FieldIdentifier è uguale a SQL_COLUMN_TYPE, SQLColAttribute restituisce i codici ODBC 2.x per data, ora e timestamp.

Questa sezione descrive gli argomenti seguenti: