CREATE OR REPLACE PROCEDURE <PROC_NAME>
BEGIN
CALL PROC1;
CALL PROC2;
CALL PROC3;
END;
在上述3个调用中,我为sqlexception添加了declare exit处理程序 CALL PROC_ERROR('Proc_Name');
现在假设proc2中有一个sqlexception,控件转到proc\u error,我在那里执行rollback语句。在执行call proc\u error之后,控件仍然继续,并执行不应该发生的proc3过程。理想情况下,我希望在回滚完成后立即结束执行。
1条答案
按热度按时间ryhaxcpt1#
在异常处理程序中,在rollback语句之后,需要引发另一个异常。您可以通过使用resignal语句来实现这一点。详情请参见:http://guyharrison.squarespace.com/blog/2009/7/13/signal-and-resignal-in-mysql-54-and-60.html 因为将不处理重新签名的异常,所以回滚完成后执行将立即结束。