在 MySQL 中显示过程定义

问题描述 投票:0回答:10

显示过程定义的 MySQL 命令是什么,类似于 Microsoft SQL Server 中的

sp_helptext

我知道

SHOW PROCEDURE STATUS
将显示可用程序的列表。我需要查看单个过程的定义。

sql mysql database stored-procedures stored-functions
10个回答
151
投票
SHOW CREATE PROCEDURE <name>

返回使用

CREATE PROCEDURE
语句创建的先前定义的存储过程的文本。将
PROCEDURE
替换为
FUNCTION
以获得存储的函数。


44
投票

您可以使用这个:

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

16
投票
SHOW CREATE PROCEDURE proc_name;

返回

proc_name

的定义

11
投票

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

show procedure status;

它将为您提供过程及其定义者的列表 然后你就可以运行

show create procedure <procedurename>;


8
投票

您可以在数据库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' ;

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
投票

如果您想了解所有产品的概述,或者遇到仅获取 SHOW CREATE PROCEDURE 显示的过程标头的问题,则可以使用另一种快速而简单的解决方案:

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

它也会导出表描述,但不会导出数据。非常适合嗅探未知或遗忘的模式......;)


0
投票

如果您需要使用MYSQL工作台GUI查看/修改过程,您可以这样做

如上所示,您可以直接复制或发送给编辑,或更改并删除它。


0
投票

您可以使用下面的 SQL 显示 CREATE PROCEDURE 语句。 *文档解释了下面的SQL,\G可以更清楚地显示它,并且在显示

CREATE PROCEDURE
语句时必须选择数据库,否则会出现错误

SHOW CREATE PROCEDURE <procudure_name>;

或者:

SHOW CREATE PROCEDURE <procudure_name>\G

-2
投票

完美,尝试一下:

SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
    WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
© www.soinside.com 2019 - 2024. All rights reserved.