Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Zurückgeben der Parameter einer gespeicherten Prozedur oder benutzerdefinierten Funktion in SQL Server (T-SQL-Beispiele)

In SQL Server können Sie die Transact-SQL PARAMETERS verwenden Schemaansicht der Systeminformationen, um die Parameter zu finden, die in einer gespeicherten Prozedur oder benutzerdefinierten Funktion verwendet werden.

Genauer gesagt gibt es eine Zeile für jeden Parameter einer benutzerdefinierten Funktion oder gespeicherten Prozedur zurück, auf die der aktuelle Benutzer in der aktuellen Datenbank zugreifen kann.

Um diese Ansicht zu verwenden, geben Sie den vollständig qualifizierten Namen INFORMATION_SCHEMA.PARAMETERS an .

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel für die Rückgabe von Informationen über die Parameter, die in allen gespeicherten Prozeduren und benutzerdefinierten Funktionen in der aktuellen Datenbank verwendet werden, auf die der aktuelle Benutzer Zugriff hat.

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;

Ergebnis:

+------------+----------+----------------------+--------+-------------+------------------+-------------+
| 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 diesem Beispiel habe ich mich dafür entschieden, nur sieben Spalten aus der Ansicht zurückzugeben. Das folgende Beispiel zeigt alle Spalten an.

Beispiel 2 – Alle Spalten zurückgeben

In diesem Beispiel füge ich alle Spalten hinzu, die die Ansicht zurückgibt. Ich verwende auch eine vertikale Ausgabe, damit Sie nicht gezwungen sind, horizontal zu scrollen. Außerdem verwende ich der Kürze halber ein WHERE -Klausel, um Informationen über nur eine benutzerdefinierte Funktion zurückzugeben, die einen Parameter verwendet (daher wird nur eine Zeile zurückgegeben).

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

Ergebnis (bei vertikaler Ausgabe):

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

Informationen zu jeder von dieser Ansicht zurückgegebenen Spalte finden Sie in der Microsoft-Dokumentation.