如何在mysql命令行中查看存储过程或存储函数的列表,就像使用
SHOW TABLES;
或SHOW DATABASES;
命令一样。SHOW TABLES;
或SHOW DATABASES;
命令一样。SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
show procedure status
会显示存储过程。
show create procedure MY_PROC
这会向您展示一个过程的定义。并且
help show
将为您显示show
命令的所有可用选项。
按名称查看过程
select name from mysql.proc
以下代码用于列出所有存储过程,该代码提供与“show procedure status”相同的结果。
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
,以获取更多信息,减少内置系统垃圾。 - pbnelson更具体的方法:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
如上所述,
show procedure status;
这确实会显示一份存储过程列表,但会展示服务器范围内的所有存储过程。
如果你只想查看单个数据库中的存储过程,请尝试以下方法:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
替代方案:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
我偏爱以下特点的工具:
从该主题的其他回答中整合而来。
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
...这将使结果看起来像这样:
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)
显示所有存储过程:
SHOW PROCEDURE STATUS;
显示所有函数:
SHOW FUNCTION STATUS;
显示指定过程的定义:
SHOW CREATE PROCEDURE [PROC_NAME];
显示给定数据库的所有过程:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
使用这个:
SHOW PROCEDURE STATUS;
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
这是因为我在做一些日常清理之后需要节省时间:
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';
object_name(@@procid)
,MySql中是否有类似的东西? - Zameer Ansari