Dưới đây là hai tùy chọn để trả về danh sách đầy đủ các thủ tục được lưu trữ trong MySQL.
SHOW PROCEDURE STATUS
Lệnh
Cách nhanh nhất để liệt kê tất cả các thủ tục được lưu trữ là sử dụng SHOW PROCEDURE STATUS
lệnh.
Chỉ cần chạy như sau để liệt kê tất cả các thủ tục được lưu trữ:
SHOW PROCEDURE STATUS;
Cú pháp như sau:
SHOW PROCEDURE STATUS
[LIKE 'pattern' | WHERE expr]
Vì vậy, bạn có thể sử dụng LIKE
hoặc WHERE
mệnh đề thu hẹp kết quả.
Ví dụ:
SHOW PROCEDURE STATUS LIKE 'albums%';
Kết quả:
+-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Music | spAlbumsByGenre | PROCEDURE | [email protected] | 2021-11-13 13:09:26 | 2021-11-13 13:09:26 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | Music | spAlbumsFromArtistId | PROCEDURE | [email protected] | 2021-11-13 13:03:25 | 2021-11-13 13:03:25 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | Music | spAlbumsFromArtistName | PROCEDURE | [email protected] | 2021-11-13 13:03:48 | 2021-11-13 13:03:48 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +-------+------------------------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
information_schema.routines
Bảng
Một cách khác để lấy danh sách các thủ tục được lưu trữ trong MySQL là truy vấn information_schema.routines
bảng.
Ví dụ:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE'
ORDER BY
routine_schema ASC,
routine_name ASC;
Bảng này cũng lưu trữ thông tin về các chức năng được lưu trữ. Trong ví dụ trên, tôi đã loại trừ những thứ đó bằng cách sử dụng WHERE
mệnh đề chỉ trả về các thủ tục được lưu trữ (tức là các đối tượng có routine_type
trong tổng số PROCEDURE
).
Để bao gồm các chức năng được lưu trữ, chúng tôi có thể xóa WHERE
mệnh đề:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
Trong trường hợp này, tôi cũng đã thêm routine_type
để chúng ta có thể phân biệt giữa các thủ tục và các hàm.
Chúng tôi cũng có thể loại trừ một số cơ sở dữ liệu nhất định khỏi kết quả:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema NOT IN ('sys', 'information_schema', 'mysql', 'performance_schema')
ORDER BY
routine_schema ASC,
routine_name ASC;
Đây là những gì điều này trả lại trong môi trường thử nghiệm của tôi:
+----------+------------------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+------------------------+--------------+ | Music | spAlbumsByGenre | PROCEDURE | | Music | spAlbumsFromArtistId | PROCEDURE | | Music | spAlbumsFromArtistName | PROCEDURE | | Music | spArtistFromId | PROCEDURE | | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | +----------+------------------------+--------------+
Chúng tôi cũng có thể thu hẹp nó vào một cơ sở dữ liệu cụ thể:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'music'
ORDER BY
routine_name ASC;
Kết quả:
+----------+------------------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+------------------------+--------------+ | Music | spAlbumsByGenre | PROCEDURE | | Music | spAlbumsFromArtistId | PROCEDURE | | Music | spAlbumsFromArtistName | PROCEDURE | | Music | spArtistFromId | PROCEDURE | +----------+------------------------+--------------+