2012-02-03 110 views
13

如何在MySQL中的存储过程中生成一个异常?例如: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; 

有没有更优雅的方式?

谢谢。

回答

13

由于MySQL 5.5可以使用SIGNALRESIGNAL进行错误处理。在此之前,无法处理MySQL中的错误。唯一的方法是运行错误的查询(例如插入到非现有的表中)。