Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby na wyświetlenie listy wszystkich procedur składowanych w bazie danych SQL Server

W tym artykule przedstawiono dwa sposoby na zwrócenie listy procedur składowanych w bazie danych SQL Server.

Opcja 1 – Widok schematu informacyjnego ROUTINES

Możesz użyć ROUTINES widok schematu informacji, aby uzyskać listę wszystkich zdefiniowanych przez użytkownika procedur składowanych w bazie danych.

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

Wynik:

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

Zwróć definicję procedury

INFORMATION_SCHEMA.ROUTINES widok ma również ROUTINE_DEFINITION kolumny, dzięki czemu w razie potrzeby można łatwo zwrócić definicję każdej procedury składowanej.

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

Opcja 2 – Widok katalogu systemu sys.objects

Innym sposobem na zwrócenie listy procedur składowanych jest zapytanie o sys.objects widok katalogu systemowego.

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

Wynik:

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

Typ P jest przypuszczalnie dla „Procedury”.

Innym sposobem na to jest filtrowanie według type_desc kolumna:

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

Zwróć definicję procedury

sys.objects widok nie zawiera kolumny dla definicji obiektu. Jeśli chcesz zwrócić definicję każdej procedury składowanej, możesz dołączyć do niej za pomocą sys.sql_modules widok systemu.

Przykład:

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

Opcja 3 – Widok katalogu sys.procedures

sys.procedures procedura składowana katalogu zawiera wiersz dla każdego obiektu, który jest pewnego rodzaju procedurą z sys.objects.type =P, X, RF i PC.

Wykonanie poniższego kodu zwróci wszystkie procedury składowane, których użytkownik jest właścicielem lub do których użytkownik otrzymał pewne uprawnienia.

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

Wynik:

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

Ten widok dziedziczy type kolumna z sys.objects więc możesz filtrować wyniki według typu procedury, jeśli chcesz.

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

W moim przypadku otrzymuję ten sam wynik, ponieważ obie moje procedury są typu „P”.

Jeśli się zastanawiasz, oto, co oznacza każdy typ.

P
Procedura składowana SQL
X
Rozszerzona procedura składowana
RF
Procedura filtrowania replikacji
komputer
Procedura składowana zespołu (CLR)

Zwróć definicję procedury

sys.procedures widok nie zawiera kolumny dla definicji obiektu. Podobnie jak w przypadku poprzedniej metody, jeśli chcesz zwrócić definicję każdej procedury składowanej, możesz połączyć ją za pomocą sys.sql_modules widok systemu.

Przykład:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przetwarzaj JSON w TSQL

  2. Jak obcinać wszystkie tabele w bazie danych za pomocą TSQL?

  3. Sparametryzuj klauzulę SQL IN

  4. YEAR() Przykłady w SQL Server (T-SQL)

  5. Łączenie się z MS SQL Server z uwierzytelnianiem Windows przy użyciu Pythona?