Especificación: | CLI de DB2 2.1 | ODBC 1.0 |
|
SQLColumns() devuelve una lista de columnas en las tablas especificadas. La información se devuelve en un conjunto de resultados de SQL, que se puede recuperar utilizando las mismas funciones que se utilizan para buscar un conjunto de resultados generado por una consulta.
Sintaxis
SQLRETURN SQLColumns ( 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 *ColumnName, /* szColumnName */ SQLSMALLINT NameLength4); /* cbColumnName */
Argumentos de la función
Tabla 92. Argumentos de SQLColumns
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 argumento. |
SQLSMALLINT | NameLength1 | Entrada | Longitud de CatalogName.
DB2 Everyplace ignora este argumento. |
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 argumento. |
SQLSMALLINT | NameLength2 | Entrada | Longitud de SchemaName.
DB2 Everyplace ignora este argumento. |
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 | ColumnName | Entrada | Es posible que el almacenamiento intermedio contenga un pattern-value para calificar el conjunto de resultados por medio de un nombre de columna. |
SQLSMALLINT | NameLength4 | Entrada | Longitud de ColumnName. |
Uso
Esta función se llama para recuperar información sobre las columnas de una tabla o de un conjunto de tablas. Es posible que una aplicación habitual desee llamar a esta función después de una llamada a SQLTables() para determinar las columnas de una tabla. La aplicación debería utilizar las series de caracteres devueltas en la TABLE_NAME del conjunto de resultados de SQLTables() como entrada para esta función.
SQLColumns() devuelve un conjunto de resultados estándar, ordenado mediante TABLE_NAME y ORDINAL_POSITION. *** lista las columnas en el conjunto de resultados.
Los argumentos TableName y ColumnName aceptan patrones de búsqueda.
Esta función no devuelve información sobre las columnas de un conjunto de resultados.En su lugar debería utilizarse SQLDescribeCol() o SQLColAttribute().
Las llamadas a SQLColumns() 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 y SQL_MAX_COLUMN_NAME_LEN para determinar respectivamente las longitudes reales de las columnas TABLE_NAME y COLUMN_NAME a las que da soporte el DBMS conectado.
Aunque en futuros releases se pueden añadir nuevas columnas y modificarse los nombres de las columnas existentes, la posición de las columnas actuales no cambiará.
Columnas devueltas por SQLColumns
Si el valor de la columna DATA_TYPE denota un carácter o serie binaria, esta columna contendrá la longitud máxima de caracteres para la columna.
Para los tipos de datos DATE, TIME o TIMESTAMP, es el número total de caracteres necesarios para visualizar el valor cuando se convierte en carácter.
Para los tipos de datos numéricos, es el número total de dígitos que se permite en la columna.
Consulte también, Atributos de tipos de datos.
10 o NULL.
Si DATA_TYPE es un tipo de datos numérico exacto, esta columna contiene el valor 10 y COLUMN_SIZE contiene el número de dígitos decimales que se permiten para la columna.
Para los tipos de datos numéricos, el DBMS devuelve un NUM_PREC_RADIX de 10.
NULL se devuelve para los tipos de datos en los que el radix no resulta aplicable.
SQL_NO_NULLS si la columna no acepta valores nulos (NULL).
SQL_NULLABLE si la columna acepta valores nulos (NULL).
El valor por omisión de la columna. Si el valor por omisión es un literal numérico, esta columna contendrá la representación de caracteres del literal numérico que no tengan comillas simples encerrándolos. Si el valor por omisión es una serie de caracteres, esta columna es dicha serie encerrada entre comillas simples. Si el valor por omisión es una seudo-literal, como por ejemplo para las columnas DATE, TIME y TIMESTAMP, esta columna contendrá la palabra clave de la seudo-literal (por ejemplo CURRENT DATE) sin comillas.
Si NULL se ha especificado como valor por omisión, esta columna devuelve la palabra NULL, sin comillas. Si no se ha especificado ningún valor por omisión, esta columna es NULL.
Contiene la serie 'NO' si se sable que la columna no sea anulable; y 'YES' en caso contrario.
Este conjunto de resultados resulta idéntico a la especificación de conjunto de resultados Columns() de X/Open CLI, el cual es una versión ampliada del conjunto de resultados SQLColumns() especificado en ODBC V2. El conjunto de resultados SQLColumns() de ODBC incluye cada una de las columnas en la misma posición.
Nota: Este conjunto de resultados resulta idéntico a la especificación de conjunto de resultados Columns() de X/Open CLI, el cual es una versión ampliada del conjunto de resultados SQLColumns() especificado en ODBC V2. El conjunto de resultados SQLColumns() de ODBC incluye cada una de las columnas en la misma posición.
Códigos de retorno
Diagnósticos
Tabla 93. SQLColumns SQLSTATEs
SQLSTATE | Descripción | Explicación |
---|---|---|
24000 | Estado no válido del cursor. | Ya había un cursor abierto en el descriptor de contexto de sentencia. |
40003 08S01 | Error en el enlace de comunicaciones. | El enlace de comunicaciones entre la aplicación y la fuente de datos se interrumpió antes de finalizar la funció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 igual a SQL_NTS. |
Restricciones
Ninguna.
Consulta relacionada