MySQL - 退出存储过程

时间:2018-06-08 12:36:12

标签: mysql

CREATE OR REPLACE PROCEDURE <PROC_NAME>
    BEGIN
        CALL PROC1;
        CALL PROC2;
        CALL PROC3;
    END;

在以上所有3个电话中,我添加了DECLARE EXIT HANDLER FOR SQLEXCEPTION CALL PROC_ERROR('Proc_Name');

现在让我们说PROC2中有一个sqlexception,控件转到PROC_ERROR,我执行ROLLBACK语句。 在调用PROC_ERROR执行之后,控件仍然继续并执行不应发生的PROC3过程。 理想情况下,我想在ROLLBACK完成后立即结束执行。

1 个答案:

答案 0 :(得分:1)

在异常处理程序中,在ROLLBACK语句之后,您需要引发另一个异常。您可以使用RESIGNAL语句来实现此目的。详细信息请参见:http://guyharrison.squarespace.com/blog/2009/7/13/signal-and-resignal-in-mysql-54-and-60.html由于不会处理RESIGNALed异常,因此只要ROLLBACK完成,执行就会结束。