ストアドプロシージャ内での例外処理には、DECLARE ... HANDLERを使用します。
SQL文を実行した時のエラーなどを捕まえ、強制終了したり、何らかの処理を実行したり します。
DECLARE handler_type HANDLER FOR condition_value[,...] statement
handler_typeには、次のうちいずれかを指定します。
condition_valueハンドラがキャッチする条件を指定します。条件は複数指定できます。
sp_statementに例外をキャッチしたときに実行するステートメント文を記述します。
DECLARE condition名 CONDITION FOR condition_value
condition_valueに条件を定義します。
CREATE PROCEDURE curdemo() BEGIN DECLARE done INT DEFAULT 0; DECLARE a,b INT; DECLARE cur1 CURSOR FOR SELECT price1,price2 FROM test.t1; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur1; REPEAT FETCH cur1 INTO a, b; IF NOT done THEN IF a < b THEN INSERT INTO test.t3 VALUES (a,b); END IF; END IF; UNTIL done END REPEAT; CLOSE cur1; END