Declaración de la versión ODBC de la aplicación
Antes de que una aplicación asigne una conexión, debe establecer el atributo de entorno SQL_ATTR_ODBC_VERSION. Este atributo establece que la aplicación sigue la especificación ODBC 2.x u ODBC 3.x cuando usa los siguientes elementos:
SQLSTATE. Muchos valores de SQLSTATE son diferentes en ODBC 2.x y ODBC 3.x.
Identificadores de tipo de fecha, hora y marca de tiempo. La siguiente tabla muestra los identificadores de tipo para datos de fecha, hora y marca de tiempo en ODBC 2.x y ODBC 3.x.
ODBC 2.x ODBC 3.x Identificadores de tipo SQL SQL_DATE SQL_TYPE_DATE SQL_TIME SQL_TYPE_TIME SQL_TIMESTAMP SQL_TYPE_TIMESTAMP Identificadores de tipo C SQL_C_DATE SQL_C_TYPE_DATE SQL_C_TIME SQL_C_TYPE_TIME SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP CatalogName Argumento en SQLTables. En ODBC 2.x, los caracteres comodín ("%" y "_") del argumento CatalogName se tratan literalmente. En ODBC 3.x, se tratan como caracteres comodín. Por lo tanto, una aplicación que sigue la especificación ODBC 2.x no puede usarlos como caracteres comodín y no los evade cuando los usa como literales. Una aplicación que siga la especificación ODBC 3.x puede usarlos como caracteres comodín o evadirlos y usarlos como literales. Para obtener más información, consulte Argumentos en funciones de catálogo.
El Administrador de controladores ODBC 3.x y los controladores ODBC 3.x comprueban la versión de la especificación ODBC para la que está escrita una aplicación y responden en consecuencia Por ejemplo, si la aplicación sigue la especificación ODBC 2.x y llama a SQLExecute antes de llamar a SQLPrepare, el Administrador de controladores ODBC 3.x devuelve SQLSTATE S1010 (Error de secuencia de función). Si la aplicación sigue la especificación ODBC 3.x, el Administrador de controladores devuelve SQLSTATE HY010 (Error de secuencia de funciones). Para obtener más información, consulte Compatibilidad con versiones anteriores y cumplimiento de estándares.
Importante
Las aplicaciones que siguen la especificación ODBC 3.x deben usar código condicional para evitar el uso de funcionalidad nueva de ODBC 3.x al trabajar con controladores ODBC 2.x. Los controladores ODBC 2.x no admiten funciones nuevas de ODBC 3.x solo porque la aplicación declare que sigue la especificación ODBC 3.x. Además, los controladores ODBC 3.x no dejan de admitir la función nueva de ODBC 3.x solo porque la aplicación declare que sigue la especificación ODBC 2.x.