I SQL Server kan du använda Transact-SQL ROUTINES
systeminformationsschemavy för att returnera en lista över lagrade procedurer och funktioner i den aktuella databasen.
Mer specifikt returnerar den en lista över alla lagrade procedurer och funktioner som kan nås av den aktuella användaren i den aktuella databasen.
Du kan också använda ROUTINES
helt enkelt för att returnera information om en specifik procedur eller funktion om det behövs.
För att använda den här vyn, använd det fullständiga namnet INFORMATION_SCHEMA.ROUTINES
.
Exempel 1 – Returnera alla rutiner
Här är ett snabbt exempel som returnerar alla lagrade procedurer och funktioner i den aktuella databasen (som den aktuella användaren har tillgång till).
USE Music; SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES;
Resultat:
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)
Dessa resultat visar mig att det finns två funktioner och två procedurer som jag har tillgång till i "Musik"-databasen.
Vyn returnerar ett ganska stort antal kolumner, så i det här exemplet har jag begränsat kolumnerna till bara fyra.
Exempel 2 – Hitta en specifik rutin
Du kan också begränsa resultaten till en given procedur eller funktion om du föredrar det.
I det här exemplet inkluderar jag alla kolumner. Jag använder vertikal utmatning så att du inte tvingas rulla horisontellt.
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'uspGetAlbumsByArtist';
Resultat (med vertikal utdata):
-[ 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)
Du kommer att märka att många av kolumnerna har nollvärden. Microsofts dokumentation för denna vy säger att många av dessa kolumner alltid returnerar NULL
. Det står också att en del av dem är reserverade för framtida bruk.
Exempel 3 – Endast returprocedurer
Du kan använda en WHERE
klausul för att filtrera resultaten till bara lagrade procedurer eller bara funktioner.
Detta exempel returnerar bara lagrade procedurer.
SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE';
Resultat:
+-------------------+------------------+----------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+----------------------+----------------| | Music | dbo | spAlbumsFromArtist | PROCEDURE | | Music | dbo | uspGetAlbumsByArtist | PROCEDURE | +-------------------+------------------+----------------------+----------------+ (2 rows affected)
Exempel 4 – Endast returfunktioner
Detta exempel returnerar bara funktioner.
SELECT ROUTINE_CATALOG, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION';
Resultat:
+-------------------+------------------+-------------------+----------------+ | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | |-------------------+------------------+-------------------+----------------| | Music | dbo | ISOweek | FUNCTION | | Music | dbo | ufn_AlbumsByGenre | FUNCTION | +-------------------+------------------+-------------------+----------------+ (2 rows affected)