Compartir a través de


SQLColAttribute

Puede usar SQLColAttribute para recuperar un atributo de una columna de conjunto de resultados para instrucciones ODBC preparadas o ejecutadas. Llamar a SQLColAttribute en instrucciones preparadas provoca una acción de ida y vuelta (round trip) a SQL Server. El controlador ODBC de SQL Server Native Client recibe los datos de la columna de conjunto de resultados como parte de la ejecución de la instrucción, de modo que la llamada a SQLColAttribute tras la ejecución de SQLExecute o SQLExecDirect no implica ninguna acción de ida y vuelta (round trip) al servidor.

[!NOTA]

Los atributos de identificador de columna de ODBC no están disponibles en todos los conjuntos de resultados de SQL Server.

Identificador de campo

Descripción

SQL_COLUMN_TABLE_NAME

Disponible en conjuntos de resultados recuperados de instrucciones que generan cursores de servidor o en instrucciones SELECT ejecutadas que contienen una cláusula FOR BROWSE.

SQL_DESC_BASE_COLUMN_NAME

Disponible en conjuntos de resultados recuperados de instrucciones que generan cursores de servidor o en instrucciones SELECT ejecutadas que contienen una cláusula FOR BROWSE.

SQL_DESC_BASE_TABLE_NAME

Disponible en conjuntos de resultados recuperados de instrucciones que generan cursores de servidor o en instrucciones SELECT ejecutadas que contienen una cláusula FOR BROWSE.

SQL_DESC_CATALOG_NAME

Nombre de la base de datos. Disponible en conjuntos de resultados recuperados de instrucciones que generan cursores de servidor o en instrucciones SELECT ejecutadas que contienen una cláusula FOR BROWSE.

SQL_DESC_LABEL

Disponible en todos los conjuntos de resultados. El valor es idéntico al valor del campo SQL_DESC_NAME.

El campo sólo tiene longitud cero si una columna es el resultado de una expresión y la expresión no contiene ninguna asignación de etiqueta.

SQL_DESC_NAME

Disponible en todos los conjuntos de resultados. El valor es idéntico al valor del campo SQL_DESC_LABEL.

El campo sólo tiene longitud cero si una columna es el resultado de una expresión y la expresión no contiene ninguna asignación de etiqueta.

SQL_DESC_SCHEMA_NAME

Nombre del propietario. Disponible en conjuntos de resultados recuperados de instrucciones que generan cursores de servidor o en instrucciones SELECT ejecutadas que contienen una cláusula FOR BROWSE.

Sólo disponible si se especifica el nombre del propietario de la columna en la instrucción SELECT.

SQL_DESC_TABLE_NAME

Disponible en conjuntos de resultados recuperados de instrucciones que generan cursores de servidor o en instrucciones SELECT ejecutadas que contienen una cláusula FOR BROWSE.

SQL_DESC_UNNAMED

SQL_NAMED en todas las columnas de un conjunto de resultados, a menos que una columna sea el resultado de una expresión que no contiene ninguna asignación de etiqueta como parte de la expresión. Cuando SQL_DESC_UNNAMED devuelve SQL_UNNAMED, todos los atributos de identificador de columna de ODBC contienen cadenas de longitud cero en la columna.

El controlador ODBC de SQL Server Native Client usa la instrucción SET FMTONLY para reducir la sobrecarga del servidor cuando se llama a SQLColAttribute en instrucciones preparadas pero no ejecutadas.

Para tipos de valor grande, SQLColAttribute devolverá los valores siguientes:

Identificador de campo

Descripción del cambio

SQL_DESC_DISPLAY_SIZE

Es el número máximo de caracteres necesario para mostrar los datos de la columna. Para columnas de tipos de valor grande, el valor devuelto es SQL_SS_LENGTH_UNLIMITED.

SQL_DESC_LENGTH

Devuelve la longitud real de la columna en el conjunto de resultados. Para columnas de tipos de valor grande, el valor devuelto es SQL_SS_LENGTH_UNLIMITED.

SQL_DESC_OCTET_LENGTH

Devuelve la longitud máxima de una columna de tipos de valor grande. SQL_SS_LENGTH_UNLIMITED se usa para indicar un tamaño ilimitado.

SQL_DESC_PRECISION

Para columnas de tipos de valor grande, devuelve el valor SQL_SS_LENGTH_UNLIMITED.

SQL_DESC_TYPE

Devuelve SQL_VARCHAR, SQL_WVARCHAR y SQL_VARBINARY para tipos de valor grande.

SQL_DESC_TYPE_NAME

Devuelve "varchar", "varbinary" y "nvarchar" para tipos de valor grande.

Para todas las versiones, sólo se notifican los atributos de columna del primer conjunto de resultados cuando un lote preparado de instrucciones SQL genera varios conjuntos de resultados.

Los siguientes atributos de columna son extensiones expuestas por el controlador ODBC de SQL Server Native Client. El controlador ODBC de SQL Server Native Client devuelve todos los valores del parámetro NumericAttrPtr. Los valores se devuelven como SDWORD (largo con signo) excepto SQL_CA_SS_COMPUTE_BYLIST, que es un puntero a una matriz WORD.

Identificador de campo

Valor devuelto

SQL_CA_SS_COLUMN_HIDDEN*

Es TRUE si la columna a la que se hace referencia forma parte de una clave principal oculta creada para admitir una instrucción SELECT de Transact-SQL que contiene FOR BROWSE.

SQL_CA_SS_COLUMN_ID

Posición ordinal de la columna de resultados de una cláusula COMPUTE en la instrucción SELECT de Transact-SQL actual.

SQL_CA_SS_COLUMN_KEY*

Es TRUE si la columna a la que se hace referencia forma parte de una clave principal de la fila y la instrucción SELECT de Transact-SQL contiene FOR BROWSE.

SQL_CA_SS_COLUMN_OP

Entero que especifica el operador de agregado responsable del valor en una columna de la cláusula COMPUTE. Las definiciones de los valores enteros están en sqlncli.h.

SQL_CA_SS_COLUMN_ORDER

Posición ordinal de la columna en la cláusula ORDER BY de una instrucción SELECT de Transact-SQL u ODBC.

SQL_CA_SS_COLUMN_SIZE

Longitud máxima, en bytes, necesaria para enlazar un valor de datos recuperado de la columna a una variable SQL_C_BINARY.

SQL_CA_SS_COLUMN_SSTYPE

Tipo de datos nativo de los datos almacenados en la columna de SQL Server. Las definiciones de los valores de tipo están en sqlncli.h.

SQL_CA_SS_COLUMN_UTYPE

Tipo de datos base del tipo de datos definidos por el usuario de la columna de SQL Server. Las definiciones de los valores de tipo están en sqlncli.h.

SQL_CA_SS_COLUMN_VARYLEN

Es TRUE si los datos de la columna pueden variar en longitud; de lo contrario, es FALSE.

SQL_CA_SS_COMPUTE_BYLIST

Puntero a una matriz de WORD (corto sin signo) que especifica las columnas que se usan en la frase BY de una cláusula COMPUTE. Si la cláusula COMPUTE no especifica ninguna frase BY, se devuelve un puntero NULL.

El primer elemento de la matriz contiene el recuento de las columnas de la lista BY. Los demás elementos son los ordinales de columna.

SQL_CA_SS_COMPUTE_ID

computeid de una fila que es el resultado de una cláusula COMPUTE de la instrucción SELECT de Transact-SQL actual.

SQL_CA_SS_NUM_COMPUTES

Número de cláusulas COMPUTE especificadas en la instrucción SELECT de Transact-SQL actual.

SQL_CA_SS_NUM_ORDERS

Número de columnas especificadas en la cláusula ORDER BY de una instrucción SELECT de Transact-SQL u ODBC.

*   Disponible si el atributo SQL_SOPT_SS_HIDDEN_COLUMNS de la instrucción está establecido en SQL_HC_ON.

En SQL Server 2005 se introdujeron campos descriptores específicos del controlador para proporcionar información adicional que indicase el nombre de la colección de esquemas XML, el nombre de esquema y el nombre de catálogo, respectivamente. Estas propiedades no requieren comillas ni un carácter de escape si contienen caracteres no alfanuméricos. En la tabla siguiente se enumeran estos nuevos campos descriptores:

Nombre de la columna

Tipo

Descripción

SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME

CharacterAttributePtr

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.

Esta información se devuelve del campo de registro SQL_DESC_SS_XML_SCHEMACOLLECTION_CATALOG_NAME de IRD, que es un campo de lectura y escritura.

SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME

CharacterAttributePtr

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.

Esta información se devuelve del campo de registro SQL_DESC_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME de IRD, que es un campo de lectura y escritura.

SQL_CA_SS_XML_SCHEMACOLLECTION_NAME

CharacterAttributePtr

Nombre de una colección de esquemas XML. Si no se encuentra el nombre, esta variable contiene una cadena vacía.

Esta información se devuelve del campo de registro SQL_DESC_SS_XML_SCHEMACOLLECTION_NAME de IRD, que es un campo de lectura y escritura.

Asimismo, en SQL Server 2005 se introdujeron nuevos campos descriptores específicos del controlador para proporcionar información adicional para una columna de tipo definido por el usuario (UDT) de un conjunto de resultados o un parámetro UDT de un procedimiento almacenado o una consulta con parámetros. Estas propiedades no requieren comillas ni un carácter de escape si contienen caracteres no alfanuméricos. En la tabla siguiente se enumeran estos nuevos campos descriptores:

Nombre de la columna

Tipo

Descripción

SQL_CA_SS_UDT_CATALOG_NAME

CharacterAttributePtr

Nombre del catálogo que contiene el UDT.

SQL_CA_SS_UDT_SCHEMA_NAME

CharacterAttributePtr

Nombre del esquema que contiene el UDT.

SQL_CA_SS_UDT_TYPE_NAME

CharacterAttributePtr

Nombre del UDT.

SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME

CharacterAttributePtr

Nombre completo de ensamblado del UDT.

El identificador del campo descriptor SQL_DESC_TYPE_NAME existente se usa para indicar el nombre del UDT. El campo SQL_DESC_TYPE de una columna de tipo UDT es SQL_SS_UDT.

Compatibilidad de SQLColAttribute con las características mejoradas de fecha y hora

Para los valores devueltos en los tipos de fecha y hora, vea la sección "Información que se devuelve en los campos IRD" de Metadatos de parámetros y resultados.

Para obtener más información, vea Mejoras en los tipos de datos de fecha y hora (ODBC).

Compatibilidad de SQLColAttribute con UDT CLR grandes

SQLColAttribute 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 SQLColAttribute con columnas dispersas

SQLColAttribute consulta el nuevo campo descriptor de filas de implementación (IRD), SQL_CA_SS_IS_COLUMN_SET, para determinar si una columna es una columna column_set.

Para obtener más información, vea Compatibilidad con columnas dispersas (ODBC).