SQLの(暗黙)カーソルは、明示カーソルに関連付けられていないSQL文を処理するためにデータベースによってオープンされます。 SQLの(暗黙)カーソルには6つの属性があり、それぞれの属性がDML文の実行に関する有用な情報を戻します。
構文
sql_cursor ::=
キーワードとパラメータの説明
%BULK_ROWCOUNT
FORALL
文で使用するために設計された複合属性です。 この属性は索引付き表のように取り扱われます。 i番目の要素には、UPDATE文またはDELETE
文のi
番目の実行によって処理された行の数が格納されます。 i番目の実行によって影響を受ける行がない場合、%BULK_ROWCOUNT(i)
は0(ゼロ)を戻します。
%BULK_EXCEPTIONS
SAVE
EXCEPTIONS
句を使用するFORALL
文によって発生した例外についての情報を格納する結合配列です。 この要素をループして、例外の発生した箇所と内容を判断する必要があります。 SQL%BULK_EXCEPTIONS(
i
)
.ERROR_INDEX
は、1からSQL%BULK_EXCEPTIONS
.COUNT
までの各索引値iにおいて、例外の原因となったFORALL
ループの反復を指定します。 SQL%BULK_EXCEPTIONS(
i
)
.ERROR_CODE
は、例外に対応するOracle Databaseエラー・コードを指定します。
%FOUND
INSERT
文、UPDATE
文またはDELETE
文が1つ以上の行に影響を与える場合またはSELECT
INTO
文が1つ以上の行を戻す場合、この属性はTRUE
を戻します。 それ以外の場合は、FALSE
を戻します。
%ISOPEN
データベースによってSQL
カーソルに関連付けられたSQL文の実行が終了されると、このカーソルが自動的にクローズされるため、この属性は常にFALSE
を戻します。
%NOTFOUND
%FOUND
とは論理的に反対の意味を持ちます。 INSERT
文、UPDATE
文またはDELETE
文がどの行にも影響を与えない場合またはSELECT
INTO
文がどの行も戻さない場合、この属性はTRUE
を戻します。 それ以外の場合は、FALSE
を戻します。
%ROWCOUNT
INSERT
文、UPDATE
文またはDELETE
文に影響を受けた行、またはSELECT
INTO
文に戻された行の数を戻します。
SQL
暗黙カーソルの名前です。
使用上の注意
カーソル属性は、プロシージャ文では使用できますが、SQL文では使用できません。 データベースによってSQL
カーソルが自動的にオープンされるまで、暗黙カーソルの属性はNULL
を戻します。 カーソル属性の値は、常に直前に実行されたSQL文を参照します(その文の場所とは無関係です)。 文が別の有効範囲に存在する場合もあります。 したがって、属性の値を保存して後で使用する場合は、値を変数に直接代入してください。
SELECT
INTO
文が行を戻せなかった場合は、次の行でSQL%NOTFOUND
をチェックしているかどうかにかかわらず、PL/SQLによって事前定義済の例外NO_DATA_FOUND
が呼び出されます。 SQL集計関数を起動するSELECT
INTO
文が、NO_DATA_FOUND
を呼び出すことはありません。SQL集計関数は、必ず値またはNULL
を戻します。 このような場合、SQL%NOTFOUND
はFALSE
を戻します。 典型的な挿入は1行にのみ影響するため、%BULK_ROWCOUNT
はバルク挿入用に保持されません。 「FORALLによる影響を受ける行カウント(%BULK_ROWCOUNT属性)」を参照してください。
バルク・バインドには、スカラー属性の%FOUND
、%NOTFOUND
および%ROWCOUNT
を使用できます。 たとえば、%ROWCOUNT
は、SQL文のすべての実行によって処理された行の総数を戻します。 %FOUND
と%NOTFOUND
は、SQL文の最後の実行のみを参照しますが、%BULK_ROWCOUNT
を使用すると、個の実行に対する値を推論できます。 たとえば、%BULK_ROWCOUNT(i)
がゼロの場合、%FOUND
と%NOTFOUND
はそれぞれ、FALSE
およびTRUE
になります。
関連トピック