Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

3 cách liệt kê tất cả các thủ tục được lưu trữ trong cơ sở dữ liệu SQL Server

Bài viết này trình bày hai cách để trả về danh sách các thủ tục được lưu trữ trong cơ sở dữ liệu SQL Server.

Tùy chọn 1 - Chế độ xem giản đồ thông tin ROUTINES

Bạn có thể sử dụng ROUTINES chế độ xem lược đồ thông tin để nhận danh sách tất cả các thủ tục được lưu trữ do người dùng xác định trong cơ sở dữ liệu.

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

Kết quả:

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

Trả lại Định nghĩa của Thủ tục

INFORMATION_SCHEMA.ROUTINES chế độ xem cũng có ROUTINE_DEFINITION , vì vậy bạn có thể dễ dàng trả lại từng định nghĩa của thủ tục được lưu trữ nếu cần.

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

Tùy chọn 2 - Chế độ xem danh mục hệ thống sys.objects

Một cách khác để trả về danh sách các thủ tục đã lưu trữ là truy vấn sys.objects chế độ xem danh mục hệ thống.

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

Kết quả:

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

Loại P là có thể cho "Thủ tục".

Một cách khác để làm điều này là lọc theo type_desc cột:

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

Trả lại Định nghĩa của Thủ tục

sys.objects chế độ xem không bao gồm một cột cho định nghĩa của đối tượng. Nếu bạn muốn trả lại định nghĩa của từng thủ tục đã lưu trữ, bạn có thể kết hợp nó với sys.sql_modules chế độ xem hệ thống.

Ví dụ:

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

Tùy chọn 3 - Chế độ xem danh mục sys.procedures

sys.procedures thủ tục được lưu trữ trong danh mục chứa một hàng cho mỗi đối tượng là một thủ tục thuộc một số loại, với sys.objects.type =P, X, RF và PC.

Việc thực thi đoạn mã sau sẽ trả về tất cả các thủ tục được lưu trữ mà người dùng sở hữu hoặc người dùng đã được cấp một số quyền.

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

Kết quả:

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

Chế độ xem này kế thừa kiểu type cột từ sys.objects vì vậy bạn có thể lọc kết quả theo loại thủ tục nếu bạn muốn.

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

Trong trường hợp của tôi, tôi nhận được cùng một kết quả vì cả hai quy trình của tôi đều thuộc loại “P”.

Trong trường hợp bạn đang thắc mắc, đây là ý nghĩa của từng loại.

P
Thủ tục lưu trữ SQL
X
Thủ tục được lưu trữ mở rộng
RF
Replication-filter-procedure
PC
Thủ tục lưu trữ Assembly (CLR)

Trả lại Định nghĩa của Thủ tục

sys.procedures chế độ xem không bao gồm một cột cho định nghĩa của đối tượng. Như với phương pháp trước, nếu bạn muốn trả lại định nghĩa của từng thủ tục được lưu trữ, bạn có thể kết hợp nó với sys.sql_modules chế độ xem hệ thống.

Ví dụ:

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. Thiết kế cơ sở dữ liệu:một bảng lớn hay các bảng riêng biệt?

  2. Có ảnh hưởng nghiêm trọng đến hiệu suất khi sử dụng Khóa ngoại trong SQL Server không?

  3. Cách hiển thị ngày ở định dạng Anh trong SQL Server (T-SQL)

  4. Bảng danh sách máy chủ SQL:Cách hiển thị tất cả các bảng

  5. Thủ tục mong đợi tham số không được cung cấp