sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera parametrarna för en lagrad procedur eller användardefinierad funktion i SQL Server (T-SQL-exempel)

I SQL Server kan du använda Transact-SQL PARAMETERS systeminformationsschemavy för att hitta parametrarna som används i en lagrad procedur eller användardefinierad funktion.

Mer specifikt returnerar den en rad för varje parameter i en användardefinierad funktion eller lagrad procedur som kan nås av den aktuella användaren i den aktuella databasen.

För att använda den här vyn, ange det fullständiga namnet på INFORMATION_SCHEMA.PARAMETERS .

Exempel 1 – Grundläggande användning

Här är ett exempel på att returnera information om parametrarna som används i alla lagrade procedurer och användardefinierade funktioner i den aktuella databasen som den aktuella användaren har tillgång till.

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;

Resultat:

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

I det här exemplet valde jag att endast returnera sju kolumner från vyn. Följande exempel visar alla kolumner.

Exempel 2 – Returnera alla kolumner

I det här exemplet inkluderar jag alla kolumner som vyn returnerar. Jag använder också vertikal utmatning så att du inte tvingas rulla horisontellt. För korthetens skull använder jag också en WHERE sats för att returnera information om bara en användardefinierad funktion som använder en parameter (därför returneras endast en rad).

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

Resultat (med vertikal utdata):

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

Se Microsofts dokumentation för information om varje kolumn som returneras av den här vyn.


  1. SQLite Insert

  2. Problem med UTF-8-tecken; det jag ser är inte det jag har lagrat

  3. Vad är LIKE Logical Operator i SQL Server - SQL Server / TSQL Tutorial Del 123

  4. Vanliga misstag av DBA i MS SQL Server