2012-02-03 13 views
13

MySQLのストアドプロシージャで例外を生成する方法は?たとえば: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; 

私は、ストアドプロシージャで例外をスローする方法がないと思いますが、私は非既存のテーブルから選択することで、エラーを強制することができます。例:

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のエラーを処理する方法はありませんでした。唯一の方法は、誤ったクエリを実行することです(たとえば、既存のテーブルに挿入するなど)。

関連する問題