SQL 解説書

ITERATE ステートメント

ITERATE ステートメントを使用すると、制御のフローがラベル付きループの最初に戻ります。

構文

>>-ITERATE--label----------------------------------------------><
 

説明

label
DB2 が制御のフローを渡す先の FOR、LOOP、REPEAT、または WHILE ステートメントのラベルを指定します。

この例では、カーソルを使用して新しい部門の情報を戻します。 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


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]