[MySQL]MySQL中如何使用SQL命令行列举出数据库中所有的存储过程和函数?

MySQL 作者: Rector 38阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在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)), '%'));

阅读了该文章的人还浏览了...

本文永久链接图享网 » [MySQL]MySQL中如何使用SQL命令行列举出数据库中所有的存储过程和函数?

发布于: 2018-04-20 08:58:56
分享扩散:

文章评论

获取验证码