sql >> Databáze >  >> RDS >> Sqlserver

3 způsoby, jak vypsat všechny uložené procedury v databázi SQL Server

Tento článek představuje dva způsoby, jak vrátit seznam uložených procedur v databázi SQL Server.

Možnost 1 – Zobrazení informačního schématu ROUTINES

Můžete použít ROUTINES zobrazení informačního schématu pro získání seznamu všech uživatelsky definovaných uložených procedur v databázi.

USE Music;
SELECT 
  ROUTINE_SCHEMA,
  ROUTINE_NAME
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE';

Výsledek:

+------------------+----------------------+
| ROUTINE_SCHEMA   | ROUTINE_NAME         |
|------------------+----------------------|
| dbo              | spAlbumsFromArtist   |
| dbo              | uspGetAlbumsByArtist |
+------------------+----------------------+

Vraťte definici procedury

INFORMATION_SCHEMA.ROUTINES pohled má také ROUTINE_DEFINITION sloupec, takže v případě potřeby můžete snadno vrátit definici každé uložené procedury.

SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE';

Možnost 2 – Zobrazení systémového katalogu sys.objects

Dalším způsobem, jak vrátit seznam uložených procedur, je dotaz na sys.objects zobrazení systémového katalogu.

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type = 'P';

Výsledek:

+----------+----------------------+
| Schema   | name                 |
|----------+----------------------|
| dbo      | spAlbumsFromArtist   |
| dbo      | uspGetAlbumsByArtist |
+----------+----------------------+

Typ P je pravděpodobně pro „Postup“.

Dalším způsobem, jak toho dosáhnout, je filtrovat podle type_desc sloupec:

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  name
FROM sys.objects
WHERE type_desc = 'SQL_STORED_PROCEDURE';

Vraťte definici procedury

Soubor sys.objects zobrazení neobsahuje sloupec pro definici objektu. Pokud chcete vrátit definici každé uložené procedury, můžete ji připojit pomocí sys.sql_modules systémový pohled.

Příklad:

SELECT definition
FROM sys.objects o
INNER JOIN sys.sql_modules m 
ON o.object_id = m.object_id
WHERE type = 'P';

Možnost 3 – Zobrazení katalogu sys.procedures

sys.procedures uložená procedura katalogu obsahuje řádek pro každý objekt, což je procedura nějakého druhu, s sys.objects.type =P, X, RF a PC.

Spuštění následujícího kódu vrátí všechny uložené procedury, které uživatel buď vlastní, nebo ke kterým má uživatel nějaké oprávnění.

SELECT 
  SCHEMA_NAME(schema_id) AS [Schema],
  Name
FROM sys.procedures;

Výsledek:

+----------+----------------------+
| Schema   | Name                 |
|----------+----------------------|
| dbo      | spAlbumsFromArtist   |
| dbo      | uspGetAlbumsByArtist |
+----------+----------------------+

Toto zobrazení dědí type sloupec z sys.objects takže můžete filtrovat výsledky podle typu procedury, pokud chcete.

SELECT 
  SCHEMA_NAME(schema_id),
  name
FROM sys.procedures
WHERE type = 'P';

V mém případě dostanu stejný výsledek, protože oba mé postupy jsou typu „P“.

Pokud vás to zajímá, zde je význam jednotlivých typů.

P
Uložená procedura SQL
X
Rozšířená uložená procedura
RF
Procedura-filtrování replikace
PC
Uložená procedura sestavení (CLR)

Vraťte definici procedury

sys.procedures zobrazení neobsahuje sloupec pro definici objektu. Stejně jako u předchozí metody, pokud chcete vrátit definici každé uložené procedury, můžete ji připojit pomocí sys.sql_modules systémový pohled.

Příklad:

SELECT definition
FROM sys.procedures p
INNER JOIN sys.sql_modules m 
ON p.object_id = m.object_id;

  1. Výkon MySQL – 5 parametrů z konfiguračního souboru

  2. Jak funguje UNCOMPRESSED_LENGTH() v MariaDB

  3. Jak vypočítat měsíční aktivní uživatele (MAU) v MySQL

  4. Oznámení obecné dostupnosti SQL Compliance Manager 5.9