Làm thế nào tôi có thể xem danh sách các thủ tục được lưu trữ hoặc các hàm được lưu trữ trong dòng lệnh mysql như show tables;
hoặc show databases;
các lệnh.
Làm thế nào tôi có thể xem danh sách các thủ tục được lưu trữ hoặc các hàm được lưu trữ trong dòng lệnh mysql như show tables;
hoặc show databases;
các lệnh.
Câu trả lời:
show procedure status
sẽ chỉ cho bạn các thủ tục được lưu trữ.
show create procedure MY_PROC
sẽ cho bạn thấy định nghĩa của một thủ tục. Và
help show
sẽ hiển thị cho bạn tất cả các tùy chọn có sẵn cho show
lệnh.
Để xem thủ tục trong tên khôn ngoan
select name from mysql.proc
mã bên dưới được sử dụng để liệt kê tất cả các thủ tục và mã bên dưới có cùng kết quả như hiển thị trạng thái thủ tục
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
một chút thông tin và ít tích hợp hệ thống tích hợp.
Một cách cụ thể hơn:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Như được đề cập ở trên,
show procedure status;
Thực sự sẽ hiển thị một danh sách các thủ tục, nhưng hiển thị tất cả chúng, trên toàn máy chủ.
Nếu bạn chỉ muốn xem những cái trong một cơ sở dữ liệu, hãy thử điều này:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Sở thích của tôi là một cái gì đó:
Khâu lại với nhau từ các câu trả lời khác trong chủ đề này, tôi kết thúc với
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... Kết thúc bạn với kết quả như thế này:
mysql> select name, type from mysql.proc where db = database() order by type, name;
+------------------------------+-----------+
| name | type |
+------------------------------+-----------+
| get_oldest_to_scan | FUNCTION |
| get_language_prevalence | PROCEDURE |
| get_top_repos_by_user | PROCEDURE |
| get_user_language_prevalence | PROCEDURE |
+------------------------------+-----------+
4 rows in set (0.30 sec)
dùng cái này:
SHOW PROCEDURE STATUS;
Hiển thị tất cả các thủ tục được lưu trữ:
SHOW PROCEDURE STATUS;
Hiển thị tất cả các chức năng:
SHOW FUNCTION STATUS;
Hiển thị định nghĩa của thủ tục được chỉ định:
SHOW CREATE PROCEDURE [PROC_NAME];
Hiển thị cho bạn tất cả các thủ tục của cơ sở dữ liệu đã cho:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Một biến thể trên bài đăng của Praveenkumar_V:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
.. và điều này bởi vì tôi cần tiết kiệm thời gian sau khi dọn phòng:
SELECT CONCAT(
"GRANT EXECUTE ON PROCEDURE `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';
SELECT CONCAT(
"GRANT EXECUTE ON FUNCTION `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';
Để chỉ hiển thị của bạn:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
Nếu bạn muốn liệt kê Quy trình lưu trữ cho Cơ sở dữ liệu được chọn hiện tại,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
nó sẽ liệt kê các Routine dựa trên cơ sở dữ liệu được chọn hiện tại
CẬP NHẬT để liệt kê các chức năng trong cơ sở dữ liệu của bạn
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
để liệt kê các thói quen / thủ tục lưu trữ trong cơ sở dữ liệu của bạn,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
để liệt kê các bảng trong cơ sở dữ liệu của bạn,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
để liệt kê các khung nhìn trong cơ sở dữ liệu của bạn,
phương pháp 1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
phương pháp 2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
Kết xuất ưa thích của tôi về danh sách thủ tục của cơ sở dữ liệu hiện tại: tên, danh sách tham số, nhận xét
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Thêm trả về cho các chức năng:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Danh sách các quy trình và chức năng của người dùng cho tất cả các cơ sở dữ liệu :
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
ORDER BY
`database`
,`type`
,`name`
;
Liệt kê các quy trình và chức năng của người dùng cho cơ sở dữ liệu đang sử dụng :
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
AND
`ROUTINE_SCHEMA` = DATABASE()
ORDER BY
`type`
,`name`
;
object_name(@@procid)
trong SSMS bất cứ thứ gì như thế này trong MySql?