Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Retornar os parâmetros de um procedimento armazenado ou função definida pelo usuário no SQL Server (exemplos T-SQL)


No SQL Server, você pode usar o Transact-SQL PARAMETERS visualização do esquema de informações do sistema para localizar os parâmetros usados ​​em um procedimento armazenado ou função definida pelo usuário.

Mais especificamente, ele retorna uma linha para cada parâmetro de uma função definida pelo usuário ou procedimento armazenado que pode ser acessado pelo usuário atual no banco de dados atual.

Para usar essa visualização, especifique o nome totalmente qualificado de INFORMATION_SCHEMA.PARAMETERS .


Exemplo 1 – Uso básico


Aqui está um exemplo de retorno de informações sobre os parâmetros usados ​​em todos os procedimentos armazenados e funções definidas pelo usuário no banco de dados atual ao qual o usuário atual tem acesso.
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;

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

Neste exemplo optei por retornar apenas sete colunas da view. O exemplo a seguir exibe todas as colunas.

Exemplo 2 – Retornar todas as colunas


Neste exemplo eu incluo todas as colunas que a view retorna. Eu também uso saída vertical para que você não seja forçado a rolar horizontalmente. Além disso, por uma questão de brevidade, eu uso um WHERE cláusula para retornar informações sobre apenas uma função definida pelo usuário que usa um parâmetro (portanto, apenas uma linha é retornada).
SELECT * 
FROM INFORMATION_SCHEMA.PARAMETERS
WHERE SPECIFIC_NAME = 'ufn_AlbumsByGenre';

Resultado (usando saída vertical):
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

Consulte a documentação da Microsoft para obter informações sobre cada coluna retornada por essa exibição.