暗黙カーソル

PL/SQL において、すべての SQL は カーソル によって実行される。 パッケージ、ストアドファンクション、ストアドプロシージャ において、 カーソルを定義せずにソースコートに埋め込まれている DML(SELECT 含む) は暗黙カーソルによって実行される。

PL/SQL における暗黙カーソルの識別子は SQL である。
対称的にカーソルを定義して DML を実行している場合には 明示カーソルと呼ばれる。その場合にもカーソル識別子から以下のプロパティを参照することができる(BULK_〜を除く)。

暗黙カーソル SQL の属性値(プロパティ)

ユーザー参照できる暗黙カーソルの識別子は、SQL 一つしかないため、直前に実行した SQL 文の結果の内容のみを保持する。 属性値は SQL%ROWCOUNT などのように '%' を使用して参照する。

カーソル属性意味タイプ
FOUNDカーソルで実行した SQL に該当するものがある、ないTRUE , FALSE
NOTFOUNDFOUND 属性の論理的な逆TRUE , FALSE
ISOPENカーソルがオープン中である、でない(※1)TRUE , FALSE
ROWCOUNTDML によって影響のあった行数
UPDATE, DELETE (SELECT 含む(※2))
数値 (>= 0)
BULK_ROWCOUNTバルク操作によって影響のあった行数の配列
(暗黙カーソルのみの属性)
配列
BULK_EXCEPTIONSバルク操作によって発生した例外の配列
(暗黙カーソルのみの属性)
配列

(※1) カーソルに対応した SQL が終了すると「SQL カーソル」(≠明示カーソル)は自動で閉じる。つまり PL/SQL 上では暗黙カーソルが OPEN している状態は検出できない。(常に FALSE)

(※2) SELECT 時の ROWCOUNT は検索に該当する総件数ではなく、フェッチ処理した件数が格納される。=フェッチ操作毎にカウントアップしていく。

BULK_ROWCOUNT

SQL%BULK_EXCEPTIONS(index)

UPDATE または DELETE 操作によって影響を受けた行数 (INSERT 時には無い)

BULK_EXCEPTIONS

SQL%BULK_EXCEPTIONS.COUNT

バルク処理で発生した例外の件数

SQL%BULK_EXCEPTIONS(index).ERROR_INDEX

バルク処理で発生した例外のコレクションの要素番号

SQL%BULK_EXCEPTIONS(index).ERROR_CODE

バルク処理で発生した例外のエラーコード (SQLCODE)



関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)