sql >> Base de Datos >  >> RDS >> Database

Encuentre las columnas devueltas por una función con valores de tabla (ejemplos de T-SQL)

En SQL Server, puede usar Transact-SQL ROUTINE_COLUMNS vista de esquema de información del sistema para encontrar las columnas devueltas por una función con valores de tabla.

Más específicamente, devuelve una fila por cada columna devuelta por las funciones con valores de tabla a las que puede acceder el usuario actual en la base de datos actual.

Para utilizar esta vista, especifique el nombre completo de INFORMATION_SCHEMA.ROUTINE_COLUMNS .

Ejemplo 1:uso básico

He aquí un ejemplo.

SELECT 
  TABLE_CATALOG AS [Database],
  TABLE_SCHEMA AS [Schema],
  TABLE_NAME AS [Function],
  COLUMN_NAME AS [Column],
  DATA_TYPE AS [Data Type],
  CHARACTER_MAXIMUM_LENGTH AS [Char Max Length] 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS;

Resultado:

+------------+----------+-------------------+------------+-------------+-------------------+
| Database   | Schema   | Function          | Column     | Data Type   | Char Max Length   |
|------------+----------+-------------------+------------+-------------+-------------------|
| Music      | dbo      | ufn_AlbumsByGenre | ArtistName | nvarchar    | 255               |
| Music      | dbo      | ufn_AlbumsByGenre | AlbumName  | nvarchar    | 255               |
| Music      | dbo      | ufn_AlbumsByGenre | Genre      | nvarchar    | 50                |
+------------+----------+-------------------+------------+-------------+-------------------+

Estos resultados me muestran que solo hay una función con valores de tabla a la que puedo acceder en la base de datos y devuelve tres columnas.

En este ejemplo, elegí devolver solo seis columnas de la vista. El siguiente ejemplo muestra todas las columnas devueltas por la vista.

Ejemplo 2:devolver todas las columnas de la vista

En este ejemplo, incluyo todas las columnas que devuelve la vista. También uso la salida vertical para que no te veas obligado a desplazarte horizontalmente. Además, en aras de la brevedad, especifico que la vista devuelva información sobre una sola columna (por lo tanto, solo se devuelve una fila).

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS
WHERE TABLE_NAME = 'ufn_AlbumsByGenre'
AND COLUMN_NAME = 'ArtistName';

Resultado (usando salida vertical):

TABLE_CATALOG            | Music
TABLE_SCHEMA             | dbo
TABLE_NAME               | ufn_AlbumsByGenre
COLUMN_NAME              | ArtistName
ORDINAL_POSITION         | 1
COLUMN_DEFAULT           | NULL
IS_NULLABLE              | NO
DATA_TYPE                | nvarchar
CHARACTER_MAXIMUM_LENGTH | 255
CHARACTER_OCTET_LENGTH   | 510
NUMERIC_PRECISION        | NULL
NUMERIC_PRECISION_RADIX  | NULL
NUMERIC_SCALE            | NULL
DATETIME_PRECISION       | NULL
CHARACTER_SET_CATALOG    | NULL
CHARACTER_SET_SCHEMA     | NULL
CHARACTER_SET_NAME       | UNICODE
COLLATION_CATALOG        | NULL
COLLATION_SCHEMA         | NULL
COLLATION_NAME           | SQL_Latin1_General_CP1_CI_AS
DOMAIN_CATALOG           | NULL
DOMAIN_SCHEMA            | NULL
DOMAIN_NAME              | NULL

Consulte la documentación de Microsoft para obtener información sobre cada columna devuelta por esta vista.