问题描述
在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)), '%'));
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册