ヘッダーをスキップ
Oracle Database PL/SQL言語リファレンス
11g リリース1(11.1)
E05670-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

SQLの(暗黙)カーソル属性

SQLの(暗黙)カーソルは、明示カーソルに関連付けられていないSQL文を処理するためにデータベースによってオープンされます。 SQLの(暗黙)カーソルには6つの属性があり、それぞれの属性がDML文の実行に関する有用な情報を戻します。

構文

sql_cursor ::=

sql_cursor
sql_cursor.gifの説明

キーワードとパラメータの説明

%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%NOTFOUNDFALSEを戻します。 典型的な挿入は1行にのみ影響するため、%BULK_ROWCOUNTはバルク挿入用に保持されません。 「FORALLによる影響を受ける行カウント(%BULK_ROWCOUNT属性)」を参照してください。

バルク・バインドには、スカラー属性の%FOUND%NOTFOUNDおよび%ROWCOUNTを使用できます。 たとえば、%ROWCOUNTは、SQL文のすべての実行によって処理された行の総数を戻します。 %FOUND%NOTFOUNDは、SQL文の最後の実行のみを参照しますが、%BULK_ROWCOUNTを使用すると、個の実行に対する値を推論できます。 たとえば、%BULK_ROWCOUNT(i)がゼロの場合、%FOUND%NOTFOUNDはそれぞれ、FALSEおよびTRUEになります。

関連トピック