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

Trả lại các thủ tục và hàm đã lưu trữ trong cơ sở dữ liệu máy chủ SQL:ROUTINES (Ví dụ T-SQL)

Trong SQL Server, bạn có thể sử dụng ROUTINES của Transact-SQL chế độ xem giản đồ thông tin hệ thống để trả về danh sách các thủ tục và chức năng được lưu trữ trong cơ sở dữ liệu hiện tại.

Cụ thể hơn, nó trả về danh sách tất cả các thủ tục và chức năng được lưu trữ mà người dùng hiện tại có thể truy cập trong cơ sở dữ liệu hiện tại.

Bạn cũng có thể sử dụng ROUTINES chỉ để trả lại thông tin về một thủ tục hoặc chức năng cụ thể nếu được yêu cầu.

Để sử dụng chế độ xem này, hãy sử dụng tên đủ điều kiện của INFORMATION_SCHEMA.ROUTINES .

Ví dụ 1 - Trả lại tất cả các quy trình

Dưới đây là một ví dụ nhanh trả về tất cả các thủ tục và chức năng được lưu trữ trong cơ sở dữ liệu hiện tại (mà người dùng hiện tại có quyền truy cập).

USE Music;
SELECT 
  ROUTINE_CATALOG,
  ROUTINE_SCHEMA,
  ROUTINE_NAME,
  ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES;

Kết quả:

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)

Những kết quả này cho tôi thấy rằng có hai hàm và hai thủ tục mà tôi có quyền truy cập trong cơ sở dữ liệu “Âm nhạc”.

Chế độ xem trả về một số lượng cột khá lớn, vì vậy trong ví dụ này, tôi đã thu hẹp các cột xuống chỉ còn bốn.

Ví dụ 2 - Tìm một quy trình cụ thể

Bạn cũng có thể thu hẹp kết quả thành một quy trình hoặc chức năng nhất định nếu bạn muốn.

Trong ví dụ này, tôi bao gồm tất cả các cột. Tôi sử dụng đầu ra theo chiều dọc để bạn không bị buộc phải cuộn theo chiều ngang.

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_NAME = 'uspGetAlbumsByArtist';

Kết quả (sử dụng đầu ra dọc):

-[ 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)

Bạn sẽ nhận thấy rằng nhiều cột có giá trị rỗng. Tài liệu của Microsoft cho dạng xem này nói rằng nhiều cột trong số này luôn trả về NULL . Nó cũng nói rằng một số trong số chúng được dành để sử dụng trong tương lai.

Ví dụ 3 - Chỉ Thủ tục Trả hàng

Bạn có thể sử dụng WHERE mệnh đề để lọc kết quả thành chỉ các thủ tục được lưu trữ hoặc chỉ các hàm.

Ví dụ này chỉ trả về các thủ tục được lưu trữ.

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

Kết quả:

+-------------------+------------------+----------------------+----------------+
| ROUTINE_CATALOG   | ROUTINE_SCHEMA   | ROUTINE_NAME         | ROUTINE_TYPE   |
|-------------------+------------------+----------------------+----------------|
| Music             | dbo              | spAlbumsFromArtist   | PROCEDURE      |
| Music             | dbo              | uspGetAlbumsByArtist | PROCEDURE      |
+-------------------+------------------+----------------------+----------------+
(2 rows affected)

Ví dụ 4 - Chỉ các hàm trả về

Ví dụ này chỉ trả về các hàm.

SELECT 
  ROUTINE_CATALOG,
  ROUTINE_SCHEMA,
  ROUTINE_NAME,
  ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'FUNCTION';

Kết quả:

+-------------------+------------------+-------------------+----------------+
| ROUTINE_CATALOG   | ROUTINE_SCHEMA   | ROUTINE_NAME      | ROUTINE_TYPE   |
|-------------------+------------------+-------------------+----------------|
| Music             | dbo              | ISOweek           | FUNCTION       |
| Music             | dbo              | ufn_AlbumsByGenre | FUNCTION       |
+-------------------+------------------+-------------------+----------------+
(2 rows affected)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuỗi định dạng số tùy chỉnh được hỗ trợ bởi FORMAT () trong SQL Server

  2. Cách liệt kê tất cả các ngày giữa hai ngày

  3. Khôi phục cơ sở dữ liệu máy chủ SQL (T-SQL)

  4. Kiểm tra sao lưu máy chủ SQL

  5. Làm thế nào để thay thế nhiều ký tự trong SQL?