sql >> Base de Datos >  >> RDS >> Sqlserver

Use COLUMNPROPERTY() para devolver información de columna o parámetro en SQL Server

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.