mysql - 你如何调试 MySQL 存储过程?

标签 mysql database debugging stored-procedures

我目前调试存储过程的过程非常简单。我创建了一个名为“debug”的表,在存储过程运行时在其中插入变量值。这让我可以在脚本中的给定点查看任何变量的值,但是有没有更好的方法来调试 MySQL 存储过程?

最佳答案

可以调用以下 debug_msg 过程来简单地将调试消息输出到控制台:

DELIMITER $$

DROP PROCEDURE IF EXISTS `debug_msg`$$
DROP PROCEDURE IF EXISTS `test_procedure`$$

CREATE PROCEDURE debug_msg(enabled INTEGER, msg VARCHAR(255))
BEGIN
  IF enabled THEN
    select concat('** ', msg) AS '** DEBUG:';
  END IF;
END $$

CREATE PROCEDURE test_procedure(arg1 INTEGER, arg2 INTEGER)
BEGIN
  SET @enabled = TRUE;

  call debug_msg(@enabled, 'my first debug message');
  call debug_msg(@enabled, (select concat_ws('','arg1:', arg1)));
  call debug_msg(TRUE, 'This message always shows up');
  call debug_msg(FALSE, 'This message will never show up');
END $$

DELIMITER ;

然后像这样运行测试:

CALL test_procedure(1,2)

这将导致以下输出:

** DEBUG:
** my first debug message
** DEBUG:
** arg1:1
** DEBUG:
** This message always shows up

关于mysql - 你如何调试 MySQL 存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273437/

相关文章:

mysql - 如何将 UPDATE 查询与子查询相结合?

MySQL 从表中选择

database - 我在哪里可以找到可以在多个数据库引擎中使用的具有通用格式数据的示例数据库?

c# - 如何为 linq 查询创建一个类 (EF)

mysql - 将具有多种格式的文本列转换为 MySQL 中的日期列

php - 如何从 WordPress 中的插件 php 编辑 mySQL wp_posts 表?

mysql - SQL = vs LIKE vs LIKE BINARY,不区分大小写

c++ - 大型可执行文件导致调试器挂起

oracle - PL/SQL 开发人员 : debugging hangs on certain code

iphone - 从 iPhone 应用程序访问控制台数据