【问题标题】:MySQL - How to throw exception in stored procedure?MySQL - 如何在存储过程中抛出异常?
【发布时间】:2012-02-26 05:34:01
【问题描述】:

如何在MySQL的存储过程中产生异常?例如:

CREATE PROCEDURE SALES()
BEGIN

STATEMENT...
STATEMENT...
STATEMENT...

IF (PRICE >= 500) THEN
/** THROWS AN EXCEPTION....  
    WHAT DO TO STOP THE PROCEDURE. **/
END IF;

STATEMENT...
STATEMENT...
STATEMENT...

END;

在 MySQL 中,我认为没有办法在存储过程中引发异常,但我可以通过从不存在的表中进行选择来强制出错。例如:

IF (PRICE > 500) THEN
    /*throw the error here*/
    SELECT * FROM price_greater_than_500_in_throw_exception;
END IF;

有没有更优雅的方式?

谢谢。

【问题讨论】:

    标签: mysql exception stored-procedures


    【解决方案1】:

    从 MySQL 5.5 开始,您可以使用 SIGNALRESIGNAL 进行错误处理。在此之前,没有办法处理 MySQL 中的错误。唯一的方法是运行错误的查询(例如插入到不存在的表中)。

    【讨论】:

      【解决方案2】:

      这是一个如何在 mysql 中抛出异常的示例,适用于 5.5 及更高版本:

      SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Custom error';
      

      详情请见:https://dev.mysql.com/doc/refman/5.5/en/signal.html

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 2016-02-17
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 2013-03-28
        • 2022-01-23
        • 1970-01-01
        • 2011-10-24
        相关资源
        最近更新 更多