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

Restituisce i parametri di una stored procedure o di una funzione definita dall'utente in SQL Server (esempi T-SQL)

In SQL Server puoi utilizzare i PARAMETERS di Transact-SQL visualizzazione dello schema delle informazioni di sistema per trovare i parametri utilizzati in una procedura memorizzata o in una funzione definita dall'utente.

Più specificamente, restituisce una riga per ogni parametro di una funzione definita dall'utente o di una procedura memorizzata a cui l'utente corrente può accedere nel database corrente.

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

Esempio 1 – Utilizzo di base

Ecco un esempio di restituzione di informazioni sui parametri utilizzati in tutte le procedure memorizzate e le funzioni definite dall'utente nel database corrente a cui l'utente corrente ha accesso.

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;

Risultato:

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

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

Esempio 2 – Restituisci tutte le colonne

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à, utilizzo un WHERE clausola per restituire informazioni su una sola funzione definita dall'utente che utilizza un parametro (quindi viene restituita solo una riga).

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

Risultato (usando l'output 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

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