SQLColumns
SQLColumns devuelve SQL_SUCCESS existan o no valores para los parámetros CatalogName, ColumnName o TableName. SQLFetch devuelve SQL_NO_DATA si se usan valores no válidos en estos parámetros.
[!NOTA]
Para los tipos de valores grandes, todos los parámetros de longitud se devolverán con un valor de SQL_SS_LENGTH_UNLIMITED.
SQLColumns se puede ejecutar en un cursor de servidor estático. Un intento de ejecutar SQLColumns en un cursor actualizable (dinámico o controlado por conjunto de claves) devolverá SQL_SUCCESS_WITH_INFO, lo que indica que se ha cambiado el tipo de cursor.
El controlador ODBC de SQL Server Native Client admite la notificación de información de tablas en servidores vinculados aceptando un nombre de dos partes para el parámetro CatalogName: Nombre_Servidor_Vinculado.Nombre_Catálogo.
Para las aplicaciones ODBC 2.x que no utilizan caracteres comodín en TableName, SQLColumns devuelve información sobre las tablas cuyos nombres coinciden con TableName y son propiedad del usuario actual. Si el usuario actual no posee ninguna tabla cuyo nombre coincida con el parámetro TableName, SQLColumns devuelve información sobre las tablas que son propiedad de otros usuarios donde el nombre de tabla coincide con el parámetro TableName. Para las aplicaciones ODBC 2.x que utilizan caracteres comodín, SQLColumns devuelve todas las tablas cuyos nombres coinciden con TableName. Para las aplicaciones ODBC 3.x SQLColumns devuelve todas las tablas cuyos nombres coinciden con TableName sin tener en cuenta el propietario o si se utilizan caracteres comodín.
La tabla siguiente muestra las columnas devueltas por el conjunto de resultados:
Nombre de la columna |
Descripción |
---|---|
DATA_TYPE |
Devuelve SQL_VARCHAR, SQL_VARBINARY o SQL_WVARCHAR para los tipos de datos varchar(max). |
TYPE_NAME |
Devuelve "varchar", "varbinary" o "nvarchar" para los tipos de datos varchar(max), varbinary(max) y nvarchar(max). |
COLUMN_SIZE |
Devuelve SQL_SS_LENGTH_UNLIMITED para los tipos de datos varchar(max) que indican que el tamaño de la columna es ilimitado. |
BUFFER_LENGTH |
Devuelve SQL_SS_LENGTH_UNLIMITED para los tipos de datos varchar(max) que indican que el tamaño del búfer es ilimitado. |
SQL_DATA_TYPE |
Devuelve SQL_VARCHAR, SQL_VARBINARY o SQL_WVARCHAR para los tipos de datos varchar(max). |
CHAR_OCTET_LENGTH |
Devuelve la longitud máxima de una columna de caracteres o binaria. Devuelve 0 para indicar que el tamaño es ilimitado. |
SS_XML_SCHEMACOLLECTION_CATALOG_NAME |
Devuelve el nombre del catálogo donde se define un nombre de colección de esquemas XML. Si no se encuentra el nombre de catálogo, esta variable contiene una cadena vacía. |
SS_XML_SCHEMACOLLECTION_SCHEMA_NAME |
Devuelve el nombre del esquema donde se define un nombre de colección de esquemas XML. Si no se encuentra el nombre de esquema, esta variable contiene una cadena vacía. |
SS_XML_SCHEMACOLLECTION_NAME |
Devuelve el nombre de una colección de esquemas XML. Si no se encuentra el nombre, esta variable contiene una cadena vacía. |
SS_UDT_CATALOG_NAME |
Nombre del catálogo que contiene el UDT (tipo definido por el usuario). |
SS_UDT_SCHEMA_NAME |
Nombre del esquema que contiene el UDT. |
SS_UDT_ASSEMBLY_TYPE_NAME |
Nombre completo de ensamblado del UDT. |
Para los UDT, la columna TYPE_NAME existente se utiliza para indicar el nombre del UDT; por consiguiente, no se debe agregar una columna adicional para éste al conjunto de resultados de SQLColumns o SQLProcedureColumns. El DATA_TYPE de una columna o parámetro de UDT es SQL_SS_UDT.
Para el UDT de los parámetros, puede utilizar los nuevos descriptores específicos del controlador definidos anteriormente para obtener o establecer las propiedades de metadatos adicionales de un UDT, en caso de que el servidor devuelva o requiera esta información.
Cuando un cliente se conecta a SQL Server y llama a SQLColumns, el uso de valores NULL o comodín para el parámetro de entrada de catálogo no devolverá información de otros catálogos. En su lugar, solo se devolverá información sobre el catálogo actual. El cliente puede llamar primero a SQLTables para determinar en qué catalogo se encuentra la tabla deseada. El cliente puede utilizar después ese valor de catálogo para el parámetro de entrada de catálogo en su llamada a SQLColumns para recuperar información sobre las columnas de esa tabla.
Parámetros de SQLColumns y con valores de tabla
El conjunto de resultados devuelto por SQLColumns depende del valor de SQL_SOPT_SS_NAME_SCOPE. Para obtener más información, vea SQLSetStmtAttr. Se han agregado las columnas siguientes para los parámetros con valores de tabla:
Nombre de columna |
Tipo de datos |
Contenido |
---|---|---|
SS_IS_COMPUTED |
Smallint |
Para una columna de TABLE_TYPE, este es SQL_TRUE si se trata de una columna calculada; de lo contrario, SQL_FALSE. |
SS_IS_IDENTITY |
Smallint |
SQL_TRUE si se trata de una columna de identidad; de lo contrario, SQL_FALSE. |
Para obtener más información acerca de los parámetros con valores de tabla, vea Parámetros con valores de tabla (ODBC).
Compatibilidad de SQLColumns con las características mejoradas de fecha y hora
Para obtener información sobre los valores devueltos para los tipos de fecha y hora, vea Metadatos de catálogo.
Para obtener más información, vea Mejoras en los tipos de datos de fecha y hora (ODBC).
Compatibilidad de SQLColumns con UDT CLR grandes
SQLColumns admite tipos definidos por el usuario (UDT) CLR grandes. Para obtener más información, vea Tipos CLR grandes definidos por el usuario (ODBC).
Compatibilidad de SQLColumns con columnas dispersas
Dos columnas concretas de SQL Server se han agregado al conjunto de resultados de SQLColumns:
Nombre de la columna |
Tipo de datos |
Descripción |
---|---|---|
SS_IS_SPARSE |
Smallint |
Si la columna es una columna dispersa, tiene el valor SQL_TRUE; de lo contrario, SQL_FALSE. |
SS_IS_COLUMN_SET |
Smallint |
Si la columna es la columna column_set, tiene el valor SQL_TRUE; de lo contrario, SQL_FALSE. |
De acuerdo con la especificación ODBC, SS_IS_SPARSE y SS_IS_COLUMN_SET aparecen antes de todas las columnas específicas del controlador que se agregaron a las versiones de SQL Server anteriores a SQL Server 2008, y después de todas las columnas asignadas por el propio ODBC.
El conjunto de resultados devuelto por SQLColumns depende del valor de SQL_SOPT_SS_NAME_SCOPE. Para obtener más información, vea SQLSetStmtAttr.
Para obtener más información acerca de las columnas dispersas en ODBC, vea Compatibilidad con columnas dispersas (ODBC).
Vea también
Conceptos
Detalles de implementación de la API de ODBC