Database
 sql >> Database >  >> RDS >> Database

Trova le colonne restituite da una funzione con valori di tabella (esempi T-SQL)

In SQL Server, puoi usare Transact-SQL ROUTINE_COLUMNS vista dello schema delle informazioni di sistema per trovare le colonne restituite da una funzione con valori di tabella.

Più specificamente, restituisce una riga per ogni colonna restituita dalle funzioni con valori di tabella a cui l'utente corrente può accedere nel database corrente.

Per utilizzare questa vista, specifica il nome completo di INFORMATION_SCHEMA.ROUTINE_COLUMNS .

Esempio 1 – Utilizzo di base

Ecco un esempio.

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;

Risultato:

+------------+----------+-------------------+------------+-------------+-------------------+
| 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                |
+------------+----------+-------------------+------------+-------------+-------------------+

Questi risultati mi mostrano che c'è solo una funzione con valori di tabella a cui posso accedere nel database e restituisce tre colonne.

In questo esempio ho scelto di restituire solo sei colonne dalla vista. L'esempio seguente mostra tutte le colonne restituite dalla vista.

Esempio 2 – Restituisci tutte le colonne dalla vista

In questo esempio includo tutte le colonne restituite dalla vista. Uso anche l'output verticale in modo da non essere costretto a scorrere orizzontalmente. Inoltre, per brevità, specifico che la vista restituisca informazioni su una sola colonna (quindi viene restituita solo una riga).

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

Risultato (usando l'output verticale):

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

Consulta la documentazione Microsoft per informazioni su ciascuna colonna restituita da questa visualizzazione.