【问题标题】:MySQL - EXIT Stored ProcedureMySQL - 退出存储过程
【发布时间】:2018-06-08 12:36:12
【问题描述】:
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,控制转到我执行 ROLLBACK 语句的 PROC_ERROR。 在调用 PROC_ERROR 执行后,控制仍然继续,它执行不应发生的 PROC3 过程。 理想情况下,我想在 ROLLBACK 完成后立即结束执行。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    在您的异常处理程序中,在 ROLLBACK 语句之后,您需要引发另一个异常。您可以通过使用 RESIGNAL 语句来实现这一点。详情见:http://guyharrison.squarespace.com/blog/2009/7/13/signal-and-resignal-in-mysql-54-and-60.html 因为 RESIGNALed 异常不会被处理,所以 ROLLBACK 完成后执行将立即结束。

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      相关资源
      最近更新 更多