如何捕获并重新抛出MySQL中的所有错误

nik*_*pen 19 mysql stored-procedures handler

我似乎无法找到任何地方如何捕获并重新抛出过程中可能发生的任何错误或警告.

我想要的是执行以下操作的语法:

create procedure myProcedure()
  begin

      declare exit handler for ANYTHING_WRONG_THAT_CAN_BE_CAUGHT_WARNINGS_INCLUDED
      begin
          rollback;
          RE_THROW THE_THING_THAT_WAS_CAUGHT;
      end;

      start transaction;
         -- do some stuff
      commit;
  end; //
Run Code Online (Sandbox Code Playgroud)

原因是我想强制对错误或警告进行回滚,而是将其留给客户端来决定如何处理特定错误.

全部区域是我不知道放什么的部分.

谢谢你的帮助!

编辑-------

我已经知道我不可能做我所问的:'(.

相反,对于出错的任何内容我都会遇到一个错误并使用以下代码:

declare exit handler for sqlwarning, sqlexception begin
    rollback;
    call error();
end;
Run Code Online (Sandbox Code Playgroud)

(error()不存在)

Mar*_*lff 21

要捕获所有SQL异常,请使用:

DECLARE EXIT HANDLER FOR SQLEXCEPTION
Run Code Online (Sandbox Code Playgroud)

SQLWARNINGS 也可以用来捕捉警告.

在异常处理程序中,要引发刚刚捕获的错误或警告,请使用:

RESIGNAL
Run Code Online (Sandbox Code Playgroud)

请参阅RESIGNAL语句的文档:

http://dev.mysql.com/doc/refman/5.5/en/resignal.html

这是从MySQL 5.5开始提供的