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 de 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.xSQLColumns 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, sólo 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 la 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).