存储过程/函数列表Mysql命令行

如何在mysql命令行中看到存储过程或存储函数的列表,如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程序的状态是一样的

 select * from mysql.proc 

更具体的方法是:

 SHOW PROCEDURE STATUS WHERE Db = DATABASE() AND Type = 'PROCEDURE' 

正如刚才提到的,

 show procedure status; 

确实会显示一个过程列表,但在服务器范围内显示所有这些过程。

如果你只想看到一个数据库中的那个,试试这个:

 SHOW PROCEDURE STATUS WHERE Db = 'databasename'; 

替代scheme:

 SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

我喜欢的东西是:

  1. 列出这两个函数和程序,
  2. 让我知道哪个是哪个,
  3. 给出程序的名称和types,没有别的
  4. 过滤当前数据库的结果, 而不是当前的定义者
  5. 对结果进行sorting

在这个线程中从其他答案缝合在一起,我结束了

 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; 

只显示你的:

 SELECT db, type, specific_name, param_list, returns FROM mysql.proc WHERE definer LIKE CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%')); 

Praveenkumar_V的post上的变化:

 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'; 
 SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name' 
  show procedure status; 

使用这个命令你可以看到数据库中的所有程序

如果要列出当前选定数据库的存储过程,

 SHOW PROCEDURE STATUS WHERE Db = DATABASE(); 

它将根据当前select的数据库列出例程

对所有过程使用以下查询:

 select * from sysobjects where type='p' order by crdate desc