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

时间:2009-12-28 10:06:24

标签: mysql stored-procedures stored-functions

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

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

8 个答案:

答案 0 :(得分:97)

SHOW CREATE PROCEDURE <name>

返回使用CREATE PROCEDURE语句创建的先前定义的存储过程的文本。为PROCEDURE交换FUNCTION以获取存储的函数。

答案 1 :(得分:35)

您可以使用:

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

答案 2 :(得分:9)

SHOW CREATE PROCEDURE proc_name;

返回proc_name

的定义

答案 3 :(得分:8)

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

show procedure status;

它将为您提供程序列表及其定义程序 然后,您可以运行show create procedure <procedurename>;

答案 4 :(得分:5)

类似的东西:

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'

答案 5 :(得分:2)

如果您想要了解所有产品的概述,或者遇到只显示SHOW CREATE PROCEDURE所显示的过程标题的问题,那么另一种快速和hacky解决方案:

splash screen

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

答案 6 :(得分:0)

您可以在数据库 mysql 中使用表 proc

mysql> SELECT body FROM mysql.proc
WHERE db = 'yourdb' AND name = 'procedurename' ;

请注意,您必须拥有select to mysql.proc 的授权:

mysql> GRANT SELECT ON mysql.proc TO 'youruser'@'yourhost' IDENTIFIED BY 'yourpass' ;

答案 7 :(得分:-3)

完美,试试吧:

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