ストアドプロシージャ内での例外処理には、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