SQL 解説書
FOR ステートメントは、表の行ごとに、ステートメントまたはステートメントのグループを実行します。
構文
>>-+---------+---FOR--for-loop-name--AS------------------------->
'-label:--'
>-----+--------------------------+--select-statement---DO------->
'-cursor-name--CURSOR FOR--'
.-------------------------------.
V |
>--------SQL-procedure-statement--;---+--END FOR----+--------+-><
'-label--'
説明
- label
- FOR ステートメントのラベルを指定します。
開始ラベルを指定した場合、
そのラベルを LEAVE および ITERATE ステートメントで使用することができます。
終了ラベルを指定する場合、開始ラベルと同じにしなければなりません。
- for-loop-name
- 生成された暗黙的な複合ステートメントのラベルを指定し、FOR ステートメントを実装します。
これは、複合ステートメントのラベルに関する規則に従いますが、
FOR ステートメント内では ITERATE または LEAVE ステートメントを併用できないという点は除きます。
for-loop-name は、
指定した select-statement から戻される列名を修飾するのに使用します。
- cursor-name
- SELECT ステートメントで生成される結果表から行を選択するのに使用するカーソルに、
名前を指定します。
指定されていない場合、DB2 が固有のカーソル名を生成します。
- select-statement
- カーソルの SELECT ステートメントを指定します。
選択リスト内のすべての列に名前を付けなければなりません。
また、複数の列に同じ名前を付けることはできません。
- SQL-procedure-statement
- 表の行ごとに呼び出すステートメント (複数も可) を指定します。
規則
- 選択リストは固有の列名で構成されていなければなりません。
また、選択リストで指定する表は、プロシージャーが作成される時点で実際に存在している表か、
または以前の SQL プロシージャー・ステートメントで作成されている表でなければなりません。
- FOR ステートメントで指定されているカーソルは、
その FOR ステートメントの外側で参照することはできません。
また、OPEN、FETCH、または CLOSE ステートメントで指定することもできません。
例
以下の例では、FOR ステートメントを使用して、employee 表全体を繰り返します。
表の中の行ごとに、SQL 変数 fullname は、
従業員のラストネーム (姓)、コンマ、ファーストネーム (名)、ブランク・スペース、
そしてミドルネームのイニシャルという順序で設定されます。
fullname の各値は、表 tnames に挿入されます。
BEGIN
DECLARE fullname CHAR(40);
FOR vl AS
SELECT firstnme, midinit, lastname FROM employee
DO
SET fullname = lastname || ',' || firstnme ||' ' || midinit;
INSERT INTO tnames VALUE (fullname);
END FOR
END
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]