13.17 カーソルFOR LOOP文
カーソルFOR LOOP文は、指定されたカーソルが戻す行の型のレコード変数として暗黙的にループ索引を宣言し、カーソルをオープンします。
反復されるたびに、カーソルFOR LOOP文は、結果セットから行をフェッチしてレコードに入れます。フェッチする行がなくなると、カーソルFOR LOOP文によってカーソルがクローズされます。また、ループの内側の文によって制御がループの外側に移された場合や、例外が呼び出された場合も、カーソルがクローズされます。
ここでのトピック
構文
cursor_for_loop_statement ::=
セマンティクス
cursor_for_loop_statement
record
cursorまたはselect_statementが戻す型の%ROWTYPEレコード変数としてカーソルFOR LOOP文が暗黙的に宣言するループ索引の名前。
recordは、カーソルFOR LOOP文に対してローカルです。ループの内側の文は、recordとそのフィールドを参照できます。仮想列は別名でのみ参照できます。ループの外側の文は、recordを参照できません。カーソルFOR LOOP文の実行後、recordは未定義となります。
cursor
カーソルFOR LOOPに入るときには、オープンされていない明示カーソル(カーソル変数ではなく)の名前。
actual_cursor_parameter
cursorの仮パラメータに対応する実パラメータ。
select_statement
SQLのSELECT文(PL/SQLのSELECT INTO文ではない)。select_statementに対して、PL/SQLは暗黙カーソルを宣言し、オープンし、データをフェッチしてクローズします。ただし、select_statementは独立した文ではないため、暗黙カーソルは内部的であり、SQLという名前で参照することはできません。
関連項目:
SELECT文の構文は、『Oracle Database SQL言語リファレンス』を参照してください。
label
cursor_for_loop_statementを識別するラベル(「statement ::=」および「label」を参照)。CONTINUE、EXITおよびGOTO文でこのラベルを参照できます。
LOOP文がネストされている場合は特に、ラベルによって読みやすさが向上します。ただし、END LOOP文内のラベルが、同じLOOP文の先頭のラベルと一致している場合のみです(コンパイラではチェックしません)。
例
