Compartir a través de


SQLColAttribute

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

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 un recorrido de ida y vuelta a SQL Server. El controlador ODBC de SQL Server Native Client recibe datos de columna del conjunto de resultados como parte de la ejecución de instrucciones, por lo que llamar a SQLColAttribute después de la finalización de SQLExecute o SQLExecDirect no implica un recorrido de ida y vuelta de servidor.

Nota:

Los atributos de identificador de columna 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 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 solo 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 solo 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.

Solo 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 para instrucciones preparadas pero noexecutadas.

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, solo se notifican los atributos de columna del primer conjunto de resultados cuando un lote preparado de instrucciones SQL genera varios conjuntos de resultados.

Los atributos de columna siguientes 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 de instrucción SQL_SOPT_SS_HIDDEN_COLUMNS está establecido en SQL_HC_ON.

SQL Server 2005 (9.x) introdujo campos descriptores específicos del controlador para proporcionar información adicional para indicar el nombre de la colección de esquemas XML, el nombre del esquema y el nombre del 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 el nombre de una 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 el nombre de una 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.

Además, SQL Server 2005 (9.x) introdujo 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 Parameter and Result Metadata.

Para obtener más información, vea Mejoras 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 definidos por el usuario (ODBC) clR grandes.

Compatibilidad de SQLColAttribute con columnas dispersas

SQLColAttribute consulta el nuevo campo de descriptor de fila 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).

Consulte también

Función SQLColAttribute
Detalles de implementación de la API de ODBC
SQLSetStmtAttr