Compartir a través de


Al recuperar la información de tipo de datos con SQLGetTypeInfo

Dado que las asignaciones de tipos de datos de SQL subyacentes a identificadores de tipo ODBC son aproximadas, ODBC proporciona una función (SQLGetTypeInfo) a través de la cual un controlador puede describir completamente cada tipo de datos de SQL en el origen de datos. Esta función devuelve un conjunto de resultados y cada fila describe las características de un único tipo de datos, como el nombre, el identificador de tipo, la precisión, la escala y la nulabilidad.

Por lo general, esta información la usan las aplicaciones genéricas que permiten al usuario crear y modificar tablas. Estas aplicaciones llaman a SQLGetTypeInfo para recuperar la información del tipo de datos y, a continuación, presentarla toda, o una parte, al usuario. Estas aplicaciones deben tener en cuenta dos cosas:

  • Más de un tipo de datos de SQL puede asignarse a un identificador de tipo único, lo que puede dificultar la determinación del tipo de datos que se va a usar. Para resolver esto, el conjunto de resultados se ordena primero por identificador de tipo y segundo por proximidad a la definición del identificador de tipo. Además, los tipos de datos definidos por el origen de datos tienen prioridad sobre los tipos de datos definidos por el usuario. Por ejemplo, supongamos que un origen de datos define los tipos de datos INTEGER y COUNTER para que sean los mismos, excepto que COUNTER se incrementa automáticamente. Supongamos también que el tipo definido por el usuario WHOLENUM es un sinónimo de INTEGER. Cada uno de estos tipos se asigna a SQL_INTEGER. En el conjunto de resultados SQLGetTypeInfo, INTEGER aparece primero, seguido de WHOLENUM y, a continuación, COUNTER. WHOLENUM aparece después de INTEGER porque lo ha definido el usuario, pero antes de COUNTER porque presenta más coincidencias con la definición del identificador de tipo SQL_INTEGER.

  • ODBC no define nombres de tipo de datos para su uso en instrucciones CREATE TABLE y ALTER TABLE. En su lugar, la aplicación debe usar el nombre devuelto en la columna TYPE_NAME del conjunto de resultados devuelto por SQLGetTypeInfo. Esto se debe a que, aunque la mayoría de SQL no varía mucho entre DBMS, los nombres de tipos de datos varían enormemente. En lugar de forzar a los controladores a analizar instrucciones SQL y reemplazar los nombres de tipos de datos estándar por nombres de tipos de datos específicos de DBMS, ODBC requiere que las aplicaciones usen los nombres específicos de DBMS en primer lugar.

Tenga en cuenta que SQLGetTypeInfo no describe necesariamente todos los tipos de datos que puede encontrar una aplicación. En concreto, los conjuntos de resultados pueden contener tipos de datos que el origen de datos no admita directamente. Por ejemplo, los tipos de datos de las columnas de los conjuntos de resultados devueltos por las funciones de catálogo se definen mediante ODBC y es posible que estos tipos de datos no sean compatibles con el origen de datos. Para determinar las características de los tipos de datos de un conjunto de resultados, una aplicación llama a SQLColAttribute.