我似乎找不到如何捕获和重新抛出过程中可能发生的任何错误或警告的方法。
我想要的是执行以下操作的语法:
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; //
原因是我想强制回滚错误或警告,但让客户端决定如何处理特定的错误。
全大写区域是我不知道该放什么的部分。
谢谢你的帮助!
编辑
从那以后我才知道,我所要求的是不可能做到的:'(.
相反,我对任何出错的地方都有一个错误,并使用了以下代码:
declare exit handler for sqlwarning, sqlexception begin
rollback;
call error();
end;
(error()不存在)
发布于 2013-09-18 14:37:39
要捕获所有SQL异常,请使用:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
SQLWARNINGS
也可以用来捕捉警告。
在异常处理程序中,要引发刚刚捕获的错误或警告,请使用:
RESIGNAL
请参阅RESIGNAL语句的文档:
http://dev.mysql.com/doc/refman/5.5/en/resignal.html
这是从MySQL 5.5开始提供的
https://stackoverflow.com/questions/13095832
复制相似问题