SQLTables - Obtener información de tabla

Finalidad

Especificación: CLI de DB2 2.1 ODBC 1.0

SQLTables() devuelve una lista de nombres de tabla e información asociada almacenada en el catálogo del sistema de la fuente de datos conectada. La lista de nombres de tabla se devuelve como un conjunto de resultados, que se puede recuperar utilizando las mismas funciones que se utilizan para procesar un conjunto de resultados generado por una consulta.

Sintaxis

SQLRETURN   SQLTables        (
                SQLHSTMT          StatementHandle,   /* hstmt */
                SQLCHAR      FAR  *CatalogName,      /* szCatalogName */
                SQLSMALLINT       NameLength1,       /* cbCatalogName */
                SQLCHAR      FAR  *SchemaName,       /* szSchemaName */
                SQLSMALLINT       NameLength2,       /* cbSchemaName */
                SQLCHAR      FAR  *TableName,        /* szTableName */
                SQLSMALLINT       NameLength3,       /* cbTableName */
                SQLCHAR      FAR  *TableType,        /* szTableType */
                SQLSMALLINT       NameLength4);      /* cbTableType */

Argumentos de la función

Tabla 89. Argumentos de SQLTables

Tipo de datos Argumento Uso Descripción
SQLHSTMT StatementHandle Entrada Descriptor de contexto de sentencia.
SQLCHAR CatalogName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados. Catalog es la primera parte de un nombre de tabla de 3 partes.

DB2 Everyplace ignora este campo.

SQLSMALLINT NameLength1 Entrada Longitud de CatalogName.

DB2 Everyplace ignora este campo.

SQLCHAR SchemaName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de esquema.

DB2 Everyplace ignora este campo.

SQLSMALLINT NameLength2 Entrada Longitud de SchemaName.

DB2 Everyplace ignora este campo.

SQLCHAR TableName Entrada Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de tabla.
SQLSMALLINT NameLength3 Entrada Longitud de TableName.
SQLCHAR TableType Entrada DB2 Everyplace sólo da soporte al tipo TABLE. DB2 Everyplace ignora este campo.
SQLSMALLINT NameLength4 Entrada DB2 Everyplace ignora este campo.

Tenga en cuenta que los argumentos de TableName aceptan patrones de búsqueda.

Uso

La información de tabla se devuelve en un conjunto de resultados en el que cada tabla se representa por medio de una fila del conjunto de resultados.

A veces, una aplicación llama a SQLTables() con punteros nulos al argumento TableName para que no se efectúe ningún intento de restringir el conjunto de resultados devuelto. Para algunas fuentes de datos que contienen una gran cantidad de tablas, este escenario se asocia a un conjunto de resultados extremadamente grande y a tiempos de recuperación muy grandes.

El conjunto de resultados que devuelve SQLTables() contiene las columnas listadas en la Tabla 90 en el orden indicado. Las filas se ordenan por medio de TABLE_NAME.

Las llamadas a SQLTables() deben utilizarse con moderación, ya que en muchos casos se asignan a una consulta compleja y por tanto cara en el catálogo del sistema. Los resultados deben guardarse en vez de repetir las llamadas.

Las columnas VARCHAR del conjunto resultante de las funciones de catálogo se han declarado con un atributo de longitud máxima 128 para que sea coherente los límites de SQL92. Dado que los nombres de DB2 son inferiores a 128, la aplicación puede optar por poner siempre a un lado 128 caracteres (más el terminador nulo) para el almacenamiento intermedio de salida o, alternativamente llamar a SQLGetInfo() con SQL_MAX_TABLE_NAME_LEN para determinar las longitudes reales de la columna TABLE_NAME a la que da soporte el DBMS conectado.

Tabla 90. Columnas devueltas por SQLTables

Nombre de la columna Tipo de datos Descripción
TABLE_CAT VARCHAR (128) Siempre es una serie de longitud cero.
TABLE_SCHEM VARCHAR (128) Siempre es una serie de longitud cero.
TABLE_NAME VARCHAR (128) El nombre de la tabla.
TABLE_TYPE VARCHAR (128) Identifica el tipo proporcionado por el nombre en la columna TABLE_NAME. Siempre tiene el valor de serie 'TABLE'.
REMARKS VARCHAR(254) Contiene la información descriptiva sobre la tabla.

Códigos de retorno

Diagnósticos

Tabla 91. SQLTables SQLSTATEs

SQLSTATE Descripción Explicación
HY001 Error de asignación de memoria. DB2 CLI no puede asignar la memoria necesaria para ejecutar o finalizar la función.
HY014 No hay más descriptores de contexto. DB2 CLI no pudo asignar un descriptor debido a los recursos internos.
HY090 Longitud no válida de la serie de caracteres o del almacenamiento intermedio. El valor de uno de los argumentos de longitud de nombre era menor que 0, pero no era igual a SQL_NTS.

La validez de uno de los argumentos de longitud del nombre superaba el valor máximo al que se da soporte para dicha fuente de datos. El valor soportado máximo puede obtenerse llamando a la función SQLGetInfo().

Restricciones

Ninguna.

Consulta relacionada