如何返回MYSQL PROCEDURE错误

时间:2019-04-01 11:34:41

标签: mysql stored-procedures procedure mysql-5.5

我有一个带有事务提交的大型MySQL过程,该过程从PHP调用并带有一些循环:最大块数。 50个条目,我总共有24213个条目。

这些循环之一产生了一些问题,但我无法获得返回的错误。我已经尝试过使用HANDLER FOR SQLEXCEPTION,SHOW ERRORS和RESIGNAL进行操作,但是我没有得到与此错误有关的任何信息。

每个执行都将结果记录在表中作为日志,我想在其中记录该错误。

SQLEXCEPTION的退出处理程序:

  CREATE PROCEDURE `Procedure01`(
  IN _Ini INT,
  IN _End INT,
  IN _CalcDate DATE
  )
  BEGIN
    DECLARE EXIT HANDLER FOR SQLEXCEPTION
      BEGIN

        RESIGNAL;
        SHOW ERRORS;

        ROLLBACK;

        SET @sql = CONCAT("INSERT INTO `Log_Procedure` (`From`,`To`,`Datetime`,`Comment`) VALUES ( '", _Ini, "','", _End, "',NOW(),'ERROR: SQLException');");
        PREPARE s FROM @sql;
        EXECUTE s;
        DEALLOCATE PREPARE s;

    END;
...

我从这个显示错误中什么也没有得到,无论是从PHP调用还是从phpMyAdmin直接调用。

另一个可能很棒的选择是从这种执行中获得回报:

SET @sql = CONCAT("INSERT INTO `Log_Procedure` (`From`,`To`,`Datetime`,`Comment`) VALUES ( '", _Ini, "','", _End, "',NOW(),'ERROR: SQLException');");
    PREPARE s FROM @sql;
    EXECUTE s;
    DEALLOCATE PREPARE s;

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

使用存储过程的参数列表中的out参数,可以返回错误消息

<svg>