在MySQL中查看存储过程/函数定义

什么是MySQL命令来查看存储过程或函数的定义,类似于Microsoft SQL Server中的sp_helptext

我知道SHOW PROCEDURE STATUS将显示可用过程的列表。 我需要看到一个过程的定义。

 SHOW CREATE PROCEDURE <name> 

返回使用CREATE PROCEDURE语句创build的以前定义的存储过程的文本。 用于FUNCTION交换存储function的PROCEDURE

你可以使用这个:

 SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename"; 
 SHOW CREATE PROCEDURE proc_name; 

返回proc_name的定义

如果你想知道程序列表,你可以运行以下命令 –

 show procedure status; 

它会给你的程序列表和他们的定义器然后你可以运行show create procedure <procedurename>;

就像是:

 DELIMITER // CREATE PROCEDURE alluser() BEGIN SELECT * FROM users; END // DELIMITER ; 

比:

 SHOW CREATE PROCEDURE alluser 

给出结果:

 'alluser', 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER', 'CREATE DEFINER=`root`@`localhost` PROCEDURE `alluser`() BEGIN SELECT * FROM users; END' 

如果您想要了解所有产品的概况,或者遇到仅获取SHOW CREATE PROCEDURE所示的过程标题的问题,

 mysqldump --user=<user> -p --no-data --routines <database> 

它也会导出表格描述,但是没有数据。 适用于嗅探未知或被遗忘的模式…;)

完美,试试吧:

 SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";