Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връщане на параметрите на съхранена процедура или дефинирана от потребителя функция в SQL Server (примери за T-SQL)

В SQL Server можете да използвате Transact-SQL PARAMETERS изглед на схемата за системна информация, за да намерите параметрите, използвани в съхранена процедура или дефинирана от потребителя функция.

По-конкретно, той връща един ред за всеки параметър на дефинирана от потребителя функция или съхранена процедура, която може да бъде достъпна от текущия потребител в текущата база данни.

За да използвате този изглед, посочете пълното име на INFORMATION_SCHEMA.PARAMETERS .

Пример 1 – Основна употреба

Ето пример за връщане на информация за параметрите, използвани във всички съхранени процедури и дефинирани от потребителя функции в текущата база данни, до която текущият потребител има достъп.

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;

Резултат:

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

В този пример избрах да върна само седем колони от изгледа. Следният пример показва всички колони.

Пример 2 – Връщане на всички колони

В този пример включвам всички колони, които изгледът връща. Използвам и вертикален изход, така че да не сте принудени да превъртате хоризонтално. Освен това, за краткост, използвам WHERE клауза, за да върне информация само за една дефинирана от потребителя функция, която използва един параметър (следователно се връща само един ред).

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

Резултат (с помощта на вертикален изход):

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

Вижте документацията на Microsoft за информация относно всяка колона, върната от този изглед.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете съхранената процедура за актуализиране на SQL Server

  2. Получаване на данни от съхранена процедура с Entity Framework

  3. ODBC скаларни функции за дата и час в SQL Server (T-SQL примери)

  4. Защо (и как) да разделяте колона с помощта на master..spt_values?

  5. Инструкцията ALTER TABLE е в конфликт с ограничението CHECK в SQL Server - SQL Server / TSQL Урок, част 89