我目前调试存储过程的过程非常简单。我创建了一个名为“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/