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」を参照)。CONTINUEEXITおよびGOTO文でこのラベルを参照できます。

LOOP文がネストされている場合は特に、ラベルによって読みやすさが向上します。ただし、END LOOP文内のラベルが、同じLOOP文の先頭のラベルと一致している場合のみです(コンパイラではチェックしません)。

  • 例6-18暗黙カーソルFOR LOOP文

  • 例6-19明示カーソルFOR LOOP文

  • 例6-20明示カーソルFOR LOOP文へのパラメータの引渡し

  • 例6-21カーソルFOR LOOPによる仮想列の参照