ITERATE ステートメントを使用すると、制御のフローがラベル付きループの最初に戻ります。
構文
>>-ITERATE--label----------------------------------------------><
説明
例
この例では、カーソルを使用して新しい部門の情報を戻します。 not_found 条件ハンドラーが呼び出されると、制御のフローがループの外側に渡されます。 v_dept の値が 'D11' の場合、 ITERATE ステートメントは制御のフローを LOOP ステートメントの先頭に戻します。 それ以外の場合は、新しい行が DEPARTMENT 表に挿入されます。
CREATE PROCEDURE ITERATOR() LANGUAGE SQL BEGIN DECLARE v_dept CHAR(3); DECLARE v_deptname VARCHAR(29); DECLARE v_admdept CHAR(3); DECLARE at_end INTEGER DEFAULT 0; DECLARE not_found CONDITION FOR SQLSTATE '02000'; DECLARE c1 CURSOR FOR SELECT deptno, deptname, admrdept FROM department ORDER BY deptno; DECLARE CONTINUE HANDLER FOR not_found SET at_end = 1; OPEN c1; ins_loop: LOOP FETCH c1 INTO v_dept, v_deptname, v_admdept; IF at_end = 1 THEN LEAVE ins_loop; ELSEIF v_dept = 'D11' THEN ITERATE ins_loop; END IF; INSERT INTO department (deptno, deptname, admrdept) VALUES ('NEW', v_deptname, v_admdept); END LOOP; CLOSE c1; END