Sri*_*.V. 69 mysql stored-procedures stored-functions
用于查看存储过程或函数定义的MySQL命令是什么,类似于sp_helptext
Microsoft SQL Server?
我知道SHOW PROCEDURE STATUS
会显示可用程序的列表.我需要看一个程序的定义.
aff*_*tee 105
SHOW CREATE PROCEDURE <name>
Run Code Online (Sandbox Code Playgroud)
返回使用该CREATE PROCEDURE
语句创建的先前定义的存储过程的文本.交换PROCEDURE
了FUNCTION
一个存储功能.
Hai*_*vgi 37
你可以用这个:
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
Run Code Online (Sandbox Code Playgroud)
小智 9
如果您想知道程序列表,可以运行以下命令 -
show procedure status;
Run Code Online (Sandbox Code Playgroud)
它将为您提供程序列表及其定义器然后您可以运行 show create procedure <procedurename>;
您可以在数据库mysql 中使用 table proc:
mysql> SELECT body FROM mysql.proc
WHERE db = 'yourdb' AND name = 'procedurename' ;
Run Code Online (Sandbox Code Playgroud)
请注意,您必须获得对mysql.proc 的select授权:
mysql> GRANT SELECT ON mysql.proc TO 'youruser'@'yourhost' IDENTIFIED BY 'yourpass' ;
Run Code Online (Sandbox Code Playgroud)
就像是:
DELIMITER //
CREATE PROCEDURE alluser()
BEGIN
SELECT *
FROM users;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
比:
SHOW CREATE PROCEDURE alluser
Run Code Online (Sandbox Code Playgroud)
给出结果:
'alluser', 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER', 'CREATE DEFINER=`root`@`localhost` PROCEDURE `alluser`()
BEGIN
SELECT *
FROM users;
END'
Run Code Online (Sandbox Code Playgroud)
如果您想了解所有产品的概述,或者遇到仅获取 SHOW CREATE PROCEDURE 显示的过程标头的问题,则可以使用另一种快速而简单的解决方案:
mysqldump --user=<user> -p --no-data --routines <database>
Run Code Online (Sandbox Code Playgroud)
它也会导出表描述,但不会导出数据。非常适合嗅探未知或遗忘的模式......;)