Compartir vía


sp_columns (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

Devuelve la información de columna para los objetos especificados, que se pueden consultar en el entorno actual.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @column_name = ] N'column_name' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

Argumentos

[ @table_name = ] N'table_name'

@table_name es nvarchar(384), sin ningún valor predeterminado.

Nombre del objeto que se usa para devolver información del catálogo. @table_name puede ser una tabla, vista u otro objeto que sea columnas como funciones con valores de tabla. @table_name es nvarchar(384), sin ningún valor predeterminado. Se admite la coincidencia de patrón de caracteres comodín.

[ @table_owner = ] N'table_owner'

Propietario del objeto que se usa para devolver información de catálogo. @table_owner es nvarchar(384), con un valor predeterminado de NULL. Se admite la coincidencia de patrón de caracteres comodín. Si no se especifica @table_owner , se aplican las reglas de visibilidad de objetos predeterminadas del DBMS subyacente.

Si el usuario actual posee un objeto con el nombre especificado, se devuelven las columnas de ese objeto. Si no se especifica @table_owner y el usuario actual no posee un objeto con el @table_name especificado, sp_columns busca un objeto con el @table_name especificado propiedad del propietario de la base de datos. Si existe uno, se devuelven las columnas de ese objeto.

[ @table_qualifier = ] N'table_qualifier'

@table_qualifier es sysname, con un valor predeterminado de NULL.

Nombre del calificador de objeto. @table_qualifier es sysname, con un valor predeterminado de NULL. Varios productos de DBMS admiten la nomenclatura de tres partes para objetos (<qualifier>.<owner>.<name>). En SQL Server, esta columna representa el nombre de la base de datos. En algunos productos, representa el nombre de servidor del entorno de base de datos del objeto.

[ @column_name = ] N'column_name'

Una sola columna y se usa cuando solo se desea una columna de información de catálogo. @column_name es nvarchar(384), con un valor predeterminado de NULL. Si no se especifica @column_name , se devuelven todas las columnas. En SQL Server, @column_name representa el nombre de columna como se muestra en la syscolumns tabla. Se admite la coincidencia de patrón de caracteres comodín. Para obtener la interoperabilidad máxima, el cliente de puerta de enlace debe asumir solo la coincidencia de patrones estándar de SQL-92 (los % caracteres comodín y _ ).

[ @ODBCVer = ] ODBCVer

Versión de ODBC que se está usando. @ODBCVer es int, con un valor predeterminado de 2. Esto indica ODBC Versión 2. Los valores válidos son 2 y 3. Para conocer las diferencias de comportamiento entre las versiones 2 y 3, consulte la especificación ODBC SQLColumns .

Valores de código de retorno

Ninguno.

Conjunto de resultados

El sp_columns procedimiento almacenado del catálogo es equivalente a SQLColumns en ODBC. Los resultados devueltos se ordenan mediante TABLE_QUALIFIER, TABLE_OWNERy TABLE_NAME.

Nombre de la columna Tipo de datos Descripción
TABLE_QUALIFIER sysname Nombre del calificador del objeto. Este campo puede ser NULL.
TABLE_OWNER sysname Nombre del propietario del objeto. Este campo siempre devuelve un valor.
TABLE_NAME sysname Nombre de objeto. Este campo siempre devuelve un valor.
COLUMN_NAME sysname Nombre de columna, para cada columna del TABLE_NAME devuelto. Este campo siempre devuelve un valor.
DATA_TYPE smallint Código entero del tipo de datos ODBC. Si este tipo de datos no se puede asignar a un tipo ODBC, es NULL. El nombre del tipo de datos nativo se devuelve en la TYPE_NAME columna .
TYPE_NAME sysname Cadena que representa un tipo de datos. El DBMS subyacente presenta este nombre del tipo de datos.
PRECISION int Número de dígitos significativos. El valor devuelto de la PRECISION columna está en la base 10.
LENGTH int Tamaño de transferencia de los datos. 1
SCALE smallint Número de dígitos a la derecha del separador decimal.
RADIX smallint Base para tipos de datos numéricos.
NULLABLE smallint Especifica la nulabilidad.

1 = NULL es posible.
0 = NOT NULL.
REMARKS varchar(254) Este campo siempre devuelve NULL.
COLUMN_DEF nvarchar(4000) Valor predeterminado de la columna.
SQL_DATA_TYPE smallint Valor del tipo de datos SQL tal como aparece en el campo TYPE del descriptor. Esta columna es la misma que la DATA_TYPE columna, excepto para los tipos de datos de intervalo datetime y SQL-92. Esta columna siempre devuelve un valor.
SQL_DATETIME_SUB smallint Código de subtipo para los tipos de datos interval de SQL-92 y datetime. Para otros tipos de datos, esta columna devuelve NULL.
CHAR_OCTET_LENGTH int Longitud máxima en bytes de una columna de tipos de datos de caracteres o enteros. Para todos los demás tipos de datos, esta columna devuelve NULL.
ORDINAL_POSITION int Posición ordinal de la columna en el objeto. La primera columna del objeto es 1. Esta columna siempre devuelve un valor.
IS_NULLABLE varchar(254) Indica si la columna admite valores NULL en el objeto. Se siguen las normas ISO para determinar la nulabilidad. Un DBMS compatible con ISO SQL no puede devolver una cadena vacía.

YES = La columna puede incluir NULL.
NO = La columna no puede incluir NULL.

Esta columna devuelve una cadena de longitud cero si no se conoce la nulabilidad.

El valor devuelto para esta columna es diferente del valor devuelto para la NULLABLE columna.
SS_DATA_TYPE tinyint Tipo de datos de SQL Server utilizado por los procedimientos almacenados extendidos. Para obtener más información, vea Tipos de datos.

1 Para obtener más información, vea Información general sobre ODBC.

Permisos

Requiere SELECT permisos y VIEW DEFINITION en el esquema.

Comentarios

sp_columns sigue los requisitos para los identificadores delimitados. Para obtener más información, consulte Identificadores de base de datos.

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

En el ejemplo siguiente se devuelve información de columna para una tabla especificada.

USE AdventureWorks2022;
GO

EXEC sp_columns
    @table_name = N'Department',
    @table_owner = N'HumanResources';

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

En el ejemplo siguiente se devuelve información de columna para una tabla especificada.

USE AdventureWorksDW2022;
GO

EXEC sp_columns
    @table_name = N'DimEmployee',
    @table_owner = N'dbo';