No SQL Server, você pode usar o Transact-SQL
ROUTINES
visualização do esquema de informações do sistema para retornar uma lista de procedimentos e funções armazenados no banco de dados atual. Mais especificamente, ele retorna uma lista de todos os procedimentos e funções armazenados que podem ser acessados pelo usuário atual no banco de dados atual.
Você também pode usar
ROUTINES
simplesmente para retornar informações sobre um procedimento ou função específica, se necessário. Para usar essa visualização, use o nome totalmente qualificado de
INFORMATION_SCHEMA.ROUTINES
. Exemplo 1 – Retornar todas as rotinas
Aqui está um exemplo rápido que retorna todos os procedimentos e funções armazenados no banco de dados atual (aos quais o usuário atual tem acesso).
USE Music; SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES;
Resultado:
Changed database context to 'Music'. +-------------------+------------------+----------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+----------------------+----------------| | Music | dbo | ISOweek | FUNCTION | | Music | dbo | ufn_AlbumsByGenre | FUNCTION | | Music | dbo | spAlbumsFromArtist | PROCEDURE | | Music | dbo | uspGetAlbumsByArtist | PROCEDURE | +-------------------+------------------+----------------------+----------------+ (4 rows affected)
Esses resultados me mostram que existem duas funções e dois procedimentos aos quais tenho acesso no banco de dados “Música”.
A exibição retorna um número bastante grande de colunas, portanto, neste exemplo, reduzi as colunas para apenas quatro.
Exemplo 2 – Encontrar uma rotina específica
Você também pode restringir os resultados a um determinado procedimento ou função, se preferir.
Neste exemplo eu incluo todas as colunas. Eu uso saída vertical para que você não seja forçado a rolar horizontalmente.
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'uspGetAlbumsByArtist';
Resultado (usando saída vertical):
-[ RECORD 1 ]------------------------- SPECIFIC_CATALOG | Music SPECIFIC_SCHEMA | dbo SPECIFIC_NAME | uspGetAlbumsByArtist ROUTINE_CATALOG | Music ROUTINE_SCHEMA | dbo ROUTINE_NAME | uspGetAlbumsByArtist ROUTINE_TYPE | PROCEDURE MODULE_CATALOG | NULL MODULE_SCHEMA | NULL MODULE_NAME | NULL UDT_CATALOG | NULL UDT_SCHEMA | NULL UDT_NAME | NULL DATA_TYPE | NULL 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 | NULL NUMERIC_PRECISION_RADIX | NULL NUMERIC_SCALE | NULL DATETIME_PRECISION | NULL INTERVAL_TYPE | NULL INTERVAL_PRECISION | NULL TYPE_UDT_CATALOG | NULL TYPE_UDT_SCHEMA | NULL TYPE_UDT_NAME | NULL SCOPE_CATALOG | NULL SCOPE_SCHEMA | NULL SCOPE_NAME | NULL MAXIMUM_CARDINALITY | NULL DTD_IDENTIFIER | NULL ROUTINE_BODY | SQL ROUTINE_DEFINITION | CREATE PROCEDURE [dbo].[uspGetAlbumsByArtist] @ArtistId int AS SELECT AlbumName FROM [fdec67e6a28d].[Music].[dbo].[Albums] WHERE ArtistId = @ArtistId EXTERNAL_NAME | NULL EXTERNAL_LANGUAGE | NULL PARAMETER_STYLE | NULL IS_DETERMINISTIC | NO SQL_DATA_ACCESS | MODIFIES IS_NULL_CALL | NULL SQL_PATH | NULL SCHEMA_LEVEL_ROUTINE | YES MAX_DYNAMIC_RESULT_SETS | -1 IS_USER_DEFINED_CAST | NO IS_IMPLICITLY_INVOCABLE | NO CREATED | 2019-10-26 01:11:30.677 LAST_ALTERED | 2019-10-26 03:50:42.527 (1 row affected)
Você notará que muitas das colunas têm valores nulos. A documentação da Microsoft para esta exibição afirma que muitas dessas colunas
sempre retornam NULL. Também afirma que alguns deles estão reservados para uso futuro.
Exemplo 3 - Procedimentos de devolução apenas
Você pode usar um
WHERE
cláusula para filtrar os resultados apenas para procedimentos armazenados ou apenas funções. Este exemplo retorna apenas procedimentos armazenados.
SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
Resultado:
+-------------------+------------------+----------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+----------------------+----------------| | Music | dbo | spAlbumsFromArtist | PROCEDURE | | Music | dbo | uspGetAlbumsByArtist | PROCEDURE | +-------------------+------------------+----------------------+----------------+ (2 rows affected)
Exemplo 4 – Apenas funções de retorno
Este exemplo retorna apenas funções.
SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
Resultado:
+-------------------+------------------+-------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+-------------------+----------------| | Music | dbo | ISOweek | FUNCTION | | Music | dbo | ufn_AlbumsByGenre | FUNCTION | +-------------------+------------------+-------------------+----------------+ (2 rows affected)