FOR文(各行に対する文の繰返し)
機能
表の各行に対してSQL文の実行を繰り返します。
形式
〔開始ラベル:〕 |
オペランド
共通規則
留意事項
使用例
表T1のデータのうち,列C1(INT型)の値が100以下のデータは表T2に代入し,それ以外は表T3に代入する手続き(PROC1)を定義します。
CREATE PROCEDURE PROC1 ()
FLBL :
FOR LVN AS SELECT C1,C2,C3 FROM T1 DO
IF C1 <= 100 THEN
INSERT INTO T2 VALUES(LVN.C1,LVN.C2,LVN.C3) ;
ELSE
INSERT INTO T3 VALUES(LVN.C1,LVN.C2,LVN.C3) ;
END IF ;
END FOR FLBL
上記使用例で示したFOR文と等価なSQLは以下のSQLで実現できます。
CREATE PROCEDURE PROC1 ()
LVN :
BEGIN
DECLARE C1,C2,C3 INT ;
DECLARE FCN CURSOR FOR SELECT C1,C2,C3 FROM T1 ;
DECLARE AT_END CHAR(1) DEFAULT 'N' ;
OPEN FCN ;
FLBL :
WHILE AT_END != 'Y' DO
FETCH FCN INTO C1,C2,C3 ;
IF SQLCODE = 100 THEN
SET AT_END = 'Y' ;
ELSE
IF C1 <= 100 THEN
INSERT INTO T2 VALUES(LVN.C1,LVN.C2,LVN.C3) ;
ELSE
INSERT INTO T3 VALUES(LVN.C1,LVN.C2,LVN.C3) ;
END IF ;
END IF ;
END WHILE FLBL ;
CLOSE FCN ;
END LVN