すべての明示的なカーソルおよびカーソル変数には4つの属性があり、それぞれがデータ操作文の実行に関する有効な情報を戻します。
構文
cursor_attribute ::=

キーワードとパラメータの説明
cursor_name
現行の有効範囲の中で、事前に宣言されている明示カーソルを識別します。
cursor_variable_name
現行の有効範囲の中で、事前に宣言されているPL/SQLカーソル変数(またはパラメータ)を識別します。
%FOUND属性
カーソル属性で、カーソルまたはカーソル変数の名前に追加できます。 カーソルがオープンされてから最初のフェッチまでのcursor_name%FOUNDは、NULLを戻します。 その後、直前のフェッチが行を戻した場合はTRUEを戻し、直前のフェッチが行を戻さなかった場合はFALSEを戻します。
host_cursor_variable_name
PL/SQLホスト環境で宣言され、バインド引数としてPL/SQLに渡されるカーソル変数を識別します。 ホスト・カーソル変数のデータ型は、PL/SQLカーソル変数の戻り型と互換性があります。 ホスト変数には、接頭辞としてコロンを付けてください。
%ISOPEN属性
カーソル属性で、カーソルまたはカーソル変数の名前に追加できます。 カーソルがオープンされていると、cursor_name%ISOPENはTRUEを戻し、それ以外の場合はFALSEを戻します。
%NOTFOUND属性
カーソル属性で、カーソルまたはカーソル変数の名前に追加できます。 カーソルがオープンされてから最初のフェッチまでのcursor_name%NOTFOUNDは、NULLを戻します。 その後、直前のフェッチが行を戻した場合はFALSEを戻し、直前のフェッチが行を戻さなかった場合はTRUEを戻します。
%ROWCOUNT属性
カーソル属性で、カーソルまたはカーソル変数の名前に追加できます。 カーソルがオープンされると%ROWCOUNTは0(ゼロ)になります。 最初のフェッチまでは、cursor_name%ROWCOUNTは0(ゼロ)を戻します。その後は、これまでにフェッチした行数を戻します。 フェッチで行が戻されるたびに、数値は増加します。
使用上の注意
カーソルの属性は、すべてのカーソルおよびカーソル変数に適用されます。 たとえば、複数のカーソルをオープンし、%FOUNDまたは%NOTFOUNDを使用して、まだフェッチしていない行が残っているカーソルがどれかを判別できます。 同様に、%ROWCOUNTを使用して、これまでにフェッチした行の数を知ることができます。
カーソルまたはカーソル変数をオープンしていない場合、%FOUND、%NOTFOUNDあるいは%ROWCOUNTでカーソルやカーソル変数を参照すると、事前定義の例外INVALID_CURSORが呼び出されます。
カーソルまたはカーソル変数をオープンすると、対応する問合せを満たす行が識別され、結果セットが形成されます。 行は、結果セットから一度に1行ずつフェッチされます。
SELECT INTO文が複数の行を戻した場合、PL/SQLによって事前定義の例外TOO_MANY_ROWSが呼び出され、%ROWCOUNTは、問合せを満たす行の実数ではなく、1に設定されます。
最初のフェッチの前は、%NOTFOUNDの評価結果はNULLです。 FETCHが正常に実行されない場合は、EXIT WHEN条件がTRUEとならず、ループは終了しません。 安全のために、次のEXIT文をかわりに使用できます。
EXIT WHEN c1%NOTFOUND OR c1%NOTFOUND IS NULL;
カーソル属性は、プロシージャ文では使用できますが、SQL文では使用できません。
関連トピック