问题描述
在MySQL数据库,使用SQL语句如何查看一个数据库中所有的存储过程,比如我们查看所有表可以使用show tables;,查看所有数据库,则可以使用命令 show databases;。
方案一
在MySQL中,可以使用SHOW PROCEDURE STATUS;来查看数据库中所有的存储过程,如果查看数据库的所有函数,则可以使用SHOW FUNCTION STATUS;,如:
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
方案二
SHOW PROCEDURE STATUS;
此语句将显示数据库中所有的存储过程。
SHOW CREATE PROCEDURE MY_PROC;
此语句将显示用户自定义的存储过程。
HELP SHOW;
此语句将显示所有
SHOW命令中可用的命令变量。
方案三
查看MySQL的存储过程的名字,可以使用:
SELECT NAME FROM mysql.proc;
以下SQL语句将列举出MySQL数据库中所有的存储过程列表,如下:
SELECT * FROM mysql.proc;
此语句的作用与
SHOW PROCEDURE STATUS;相同。
方案四
另外一种可选的SQL查询方式:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES;
方案五
从MySQL系统表mysql.proc中查询出所有函数和存储过程,然后使用where进行筛选,如下:
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)
方案六
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册