首页 / MySQL / 正文

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

4196 发布于: 2018-04-20 读完约需4分钟

问题描述

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

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [LINQ].NET/C#应用程序开发中如何使用LINQ查询集合List<T>中N的倍数索引位置的所有元素?

下一篇: [MySQL]MySQL数据库中如何使用SQL语句查看某个数据库或者所有数据库中数据表占用的存储空间大小?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册