En SQL Server, COLUMNPROPERTY()
la función devuelve información de columna o parámetro.
Por ejemplo, puede usarlo para devolver información sobre una columna en una tabla, un parámetro para un procedimiento almacenado, etc.
Acepta tres argumentos:el ID de la tabla o procedimiento, la columna o parámetro aplicable y la propiedad sobre la que desea información.
Sintaxis
La sintaxis es así:
COLUMNPROPERTY ( id , column , property )
Ejemplo 1:consultar una tabla
En este ejemplo, obtengo información sobre una columna dentro de una tabla.
USE Music; SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
En este caso, la columna ArtistId no permite valores NULL.
Cambiemos a una columna diferente:
SELECT COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];
Resultado:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
En este caso, la columna ActiveFrom permite valores NULL. También tiene una precisión de 10 y una escala de 0.
Notarás que uso el OBJECT_ID()
función para devolver el ID de la tabla. Sin esta función, necesitaría saber el ID (o tendría que hacer otra consulta solo para obtener el ID).
Esto es lo que OBJECT_ID()
devuelve en el ejemplo anterior:
SELECT OBJECT_ID('Artists') AS Result;
Resultado:
+-----------+ | Result | |-----------| | 885578193 | +-----------+
Entonces, ahora que conocemos el ID, podemos pasarlo a COLUMNPROPERTY()
función en su lugar:
SELECT COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision], COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
Resultado:
+--------------+-------------+---------+ | ActiveFrom | Precision | Scale | |--------------+-------------+---------| | 1 | 10 | 0 | +--------------+-------------+---------+
Ejemplo 2:consultar un procedimiento
En este ejemplo, obtengo información sobre un parámetro de un procedimiento almacenado.
USE Music; SELECT COLUMNPROPERTY( OBJECT_ID('dbo.uspGetAlbumsByArtist'), '@ArtistId', 'IsOutParam') AS [Result];
Resultado:
+----------+ | Result | |----------| | 0 | +----------+
Así que es exactamente la misma sintaxis. En este caso, el parámetro @ArtistId
no es un parámetro de salida.
Lista completa de opciones
Aquí hay una lista completa de argumentos que puede pasar a COLUMNPROPERTY()
al momento de escribir:
- Permite valores nulos
- Id. de columna
- Columna de tipo de texto completo
- GeneratedAlwaysType
- EsConjuntoDeColumnas
- Está calculado
- EsTipoCursor
- EsDeterminista
- Está indexado el texto completo
- Está oculto
- EsIdentidad
- IsIdNotForRepl
- Es indexable
- IsOutParam
- EsPreciso
- EsRowGuidCol
- Es escaso
- IsSystemVerified
- EsXmlIndexable
- Precisión
- Escala
- Semántica estadística
- Acceso a datos del sistema
- Acceso a datos de usuario
- UtilizaAnsiTrim
Consulte la documentación de Microsoft para obtener una explicación detallada de cada propiedad.
Consulte también OBJECTPROPERTYEX()
para una función similar que devuelve información sobre objetos del ámbito del esquema en lugar de bases de datos, y DATABASEPROPERTYEX()
que devuelve información de propiedad para bases de datos.