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

Renvoyer les paramètres d'une procédure stockée ou d'une fonction définie par l'utilisateur dans SQL Server (exemples T-SQL)

Dans SQL Server, vous pouvez utiliser les PARAMETERS Transact-SQL vue du schéma des informations système pour trouver les paramètres utilisés dans une procédure stockée ou une fonction définie par l'utilisateur.

Plus précisément, il renvoie une ligne pour chaque paramètre d'une fonction définie par l'utilisateur ou d'une procédure stockée accessible à l'utilisateur actuel dans la base de données actuelle.

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

Exemple 1 - Utilisation de base

Voici un exemple de retour d'informations sur les paramètres utilisés dans toutes les procédures stockées et les fonctions définies par l'utilisateur dans la base de données actuelle à laquelle l'utilisateur actuel a accès.

SELECT 
  SPECIFIC_CATALOG AS [Database],
  SPECIFIC_SCHEMA AS [Schema],
  SPECIFIC_NAME AS [Table],
  PARAMETER_MODE AS [Mode],
  IS_RESULT,
  PARAMETER_NAME,
  DATA_TYPE
FROM INFORMATION_SCHEMA.PARAMETERS;

Résultat :

+------------+----------+----------------------+--------+-------------+------------------+-------------+
| Database   | Schema   | Table                | Mode   | IS_RESULT   | PARAMETER_NAME   | DATA_TYPE   |
|------------+----------+----------------------+--------+-------------+------------------+-------------|
| Music      | dbo      | ISOweek              | OUT    | YES         |                  | int         |
| Music      | dbo      | ISOweek              | IN     | NO          | @DATE            | datetime    |
| Music      | dbo      | ufn_AlbumsByGenre    | IN     | NO          | @GenreId         | int         |
| Music      | dbo      | spAlbumsFromArtist   | IN     | NO          | @ArtistName      | varchar     |
| Music      | dbo      | uspGetAlbumsByArtist | IN     | NO          | @ArtistId        | int         |
+------------+----------+----------------------+--------+-------------+------------------+-------------+

Dans cet exemple, j'ai choisi de ne renvoyer que sept colonnes de la vue. L'exemple suivant affiche toutes les colonnes.

Exemple 2 - Renvoyer toutes les colonnes

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. Aussi, par souci de brièveté, j'utilise un WHERE clause afin de renvoyer des informations sur une seule fonction définie par l'utilisateur qui utilise un paramètre (par conséquent, une seule ligne est renvoyée).

SELECT * 
FROM INFORMATION_SCHEMA.PARAMETERS
WHERE SPECIFIC_NAME = 'ufn_AlbumsByGenre';

Résultat (en utilisant la sortie verticale) :

SPECIFIC_CATALOG          | Music
SPECIFIC_SCHEMA           | dbo
SPECIFIC_NAME             | ufn_AlbumsByGenre
ORDINAL_POSITION          | 1
PARAMETER_MODE            | IN
IS_RESULT                 | NO
AS_LOCATOR                | NO
PARAMETER_NAME            | @GenreId
DATA_TYPE                 | int
CHARACTER_MAXIMUM_LENGTH  | NULL
CHARACTER_OCTET_LENGTH    | NULL
COLLATION_CATALOG         | NULL
COLLATION_SCHEMA          | NULL
COLLATION_NAME            | NULL
CHARACTER_SET_CATALOG     | NULL
CHARACTER_SET_SCHEMA      | NULL
CHARACTER_SET_NAME        | NULL
NUMERIC_PRECISION         | 10
NUMERIC_PRECISION_RADIX   | 10
NUMERIC_SCALE             | 0
DATETIME_PRECISION        | NULL
INTERVAL_TYPE             | NULL
INTERVAL_PRECISION        | NULL
USER_DEFINED_TYPE_CATALOG | NULL
USER_DEFINED_TYPE_SCHEMA  | NULL
USER_DEFINED_TYPE_NAME    | NULL
SCOPE_CATALOG             | NULL
SCOPE_SCHEMA              | NULL
SCOPE_NAME                | NULL

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