7.6.1 WHILE文の形式と規則
(1) 機能
SQL文の実行を繰り返します。
(2) 形式
〔開始ラベル:〕 WHILE 探索条件 DO SQL手続き文;〔SQL手続き文;〕… END 〔WHILE〕 〔終了ラベル〕
(3) オペランド
(a) 〔開始ラベル〕
WHILE文の文ラベルを指定します。
(b) 探索条件
SQL手続き文の実行を繰り返す条件を指定します。
(c) SQL手続き文
繰り返し実行するSQL手続き文を指定します。
(d) END 〔WHILE〕 〔終了ラベル〕
WHILE文の終了を指定します。終了ラベルには,文ラベルを指定します。
WHILEは指定してもしなくても同じです。
(4) 共通規則
-
終了ラベルを指定する場合は,開始ラベルと同じ名称の文ラベルを指定してください。
-
文ラベルの有効範囲は,WHILE文の開始から終了までの間です。そのWHILE文中に含まれるほかの文の文ラベル,及びループ変数名と同じ名称の文ラベルは指定できません。ただし,SQL手続き文中にハンドラ宣言がある場合,そのハンドラ宣言中は除きます。同一名称の文ラベルの指定可否の例を次に示します。
AAA: WHILE X < 100 DO BEGIN ...........................................1 DECLARE CN1 CONDITION FOR SQLCODE VALUE -800; DECLARE EXIT HANDLER FOR CN1 AAA: BEGIN .........................................2 : END AAA; AAA: BEGIN .........................................3 DECLARE CN2 CONDITION FOR SQLCODE VALUE -800; DECLARE EXIT HANDLER FOR CN2 : END AAA; SET X=X+1; END END WHILE AAA
- 〔説明〕
-
2は,1と同一名称ですが,ハンドラ宣言中のため指定できます。
3は,1と同一名称であり,ハンドラ宣言中でないため指定できません。
-
探索条件を評価し,結果が真の場合はSQL手続き文を実行します。探索条件が偽,又は不定になるまで,繰り返しSQL手続き文を実行します。
-
指定したSQL手続き文は,指定した順序で実行されます。SQL手続き文の実行でエラーが発生した場合,それ以降のSQL手続き文は実行されません。WHILE文の実行も終了します。
-
探索条件中に副問合せを指定できません。
(5) 留意事項
-
WHILE文は,SQLルーチン中に指定できます。