Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

3 Cara Mendaftar Semua Prosedur Tersimpan di Database SQL Server

Artikel ini menyajikan dua cara untuk mengembalikan daftar prosedur tersimpan di database SQL Server.

Opsi 1 – Tampilan Skema Informasi RUTIN

Anda dapat menggunakan ROUTINES tampilan skema informasi untuk mendapatkan daftar semua prosedur tersimpan yang ditentukan pengguna dalam database.

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

Hasil:

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

Kembalikan Definisi Prosedur

INFORMATION_SCHEMA.ROUTINES tampilan juga memiliki ROUTINE_DEFINITION kolom, sehingga Anda dapat dengan mudah mengembalikan definisi setiap prosedur tersimpan jika diperlukan.

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

Opsi 2 – Tampilan Katalog Sistem sys.objects

Cara lain untuk mengembalikan daftar prosedur tersimpan adalah dengan menanyakan sys.objects tampilan katalog sistem.

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

Hasil:

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

Jenis P mungkin untuk "Prosedur".

Cara lain untuk melakukannya adalah memfilter menurut type_desc kolom:

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

Kembalikan Definisi Prosedur

sys.objects tampilan tidak menyertakan kolom untuk definisi objek. Jika Anda ingin mengembalikan definisi setiap prosedur tersimpan, Anda dapat menggabungkannya dengan sys.sql_modules tampilan sistem.

Contoh:

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

Opsi 3 – Tampilan Katalog sys.procedures

sys.procedures katalog prosedur tersimpan berisi baris untuk setiap objek yang merupakan prosedur dari beberapa jenis, dengan sys.objects.type =P, X, RF, dan PC.

Menjalankan kode berikut akan mengembalikan semua prosedur tersimpan yang dimiliki pengguna atau yang telah diberikan izin kepada pengguna.

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

Hasil:

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

Tampilan ini mewarisi type kolom dari sys.objects sehingga Anda dapat memfilter hasil berdasarkan jenis prosedur jika diinginkan.

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

Dalam kasus saya, saya mendapatkan hasil yang sama karena kedua prosedur saya bertipe “P”.

Jika Anda bertanya-tanya, inilah arti dari setiap jenis.

P
Prosedur Tersimpan SQL
X
Prosedur tersimpan yang diperluas
RF
Prosedur-filter-replikasi
PC
Prosedur tersimpan perakitan (CLR)

Kembalikan Definisi Prosedur

sys.procedures tampilan tidak menyertakan kolom untuk definisi objek. Seperti metode sebelumnya, jika Anda ingin mengembalikan definisi setiap prosedur tersimpan, Anda dapat menggabungkannya dengan sys.sql_modules tampilan sistem.

Contoh:

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. Memilih N baris di SQL Server

  2. SQL Server 2008 Windows Auth Login Error:Login berasal dari domain yang tidak tepercaya

  3. Gunakan FILE_NAME() untuk Mengembalikan Nama File Logis untuk ID File yang Diberikan di SQL Server

  4. Bagaimana saya bisa menentukan di SQL Server jika rentang dateTime tumpang tindih dengan yang lain?

  5. Memindahkan Tabel SQL Server ke Filegroup Berbeda