Database
 sql >> Base de données >  >> RDS >> Database

Rechercher les colonnes renvoyées par une fonction table (exemples T-SQL)

Dans SQL Server, vous pouvez utiliser le Transact-SQL ROUTINE_COLUMNS vue du schéma des informations système pour trouver les colonnes renvoyées par une fonction table.

Plus précisément, il renvoie une ligne pour chaque colonne renvoyée par les fonctions table auxquelles l'utilisateur actuel peut accéder dans la base de données actuelle.

Pour utiliser cette vue, spécifiez le nom complet de INFORMATION_SCHEMA.ROUTINE_COLUMNS .

Exemple 1 - Utilisation de base

Voici un exemple.

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;

Résultat :

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

Ces résultats me montrent qu'il n'y a qu'une seule fonction table à laquelle je peux accéder dans la base de données, et elle renvoie trois colonnes.

Dans cet exemple, j'ai choisi de ne renvoyer que six colonnes de la vue. L'exemple suivant affiche toutes les colonnes renvoyées par la vue.

Exemple 2 - Renvoyer toutes les colonnes de la vue

Dans cet exemple, j'inclus toutes les colonnes renvoyées par la vue. J'utilise également la sortie verticale pour que vous ne soyez pas obligé de faire défiler horizontalement. De plus, par souci de brièveté, je précise que la vue doit renvoyer des informations sur une seule colonne (par conséquent, une seule ligne est renvoyée).

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

Résultat (en utilisant la sortie 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

Consultez la documentation Microsoft pour plus d'informations sur chaque colonne renvoyée par cette vue.