2012-02-03 108 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中的錯誤。唯一的方法是運行錯誤的查詢(例如插入到非現有的表中)。