RETURNING INTO句

RETURNING INTO句は、この句が属する文によって戻された値を格納するための変数を指定します。

変数は、個々の変数またはコレクションのいずれかにできます。文を実行しても行に影響がない場合、変数の値は未定義になります。

静的RETURNING INTO句は、DELETEINSERTUPDATEまたはMERGE文に属します。動的RETURNING INTO句は、EXECUTE IMMEDIATE文に属します。

ノート:

RETURNING INTO句はリモートまたはパラレルでの削除には使用できません。

ここでのトピック

構文

static_returning_clause ::=

dynamic_returning_clause ::=

into_clause ::=

bulk_collect_into_clause ::=

セマンティクス

static_returning_clause

OLD | NEW

表に列c1c2があるとすると、c1列に対してOLDを指定できます(例: OLD c1)。また、列式で参照される列に対して(例: c1+OLD c2)、または集計ファンクションで参照される列に対して(例: AVG(OLD c1)) OLDを指定することもできます。列に対してOLDを指定すると、関連するINSERTUPDATEMERGEまたはDELETE文の実行前の列値が返されます。列式によって参照される列の場合は、DML文が実行される前の列値を使用して列式を評価した結果が返されます。

NEWは、INSERTUPDATEMERGEまたはDELETE文の後に列値を返す、または列の実行後の値を使用する式の結果を返すために、列、式で参照される列、または集計ファンクションによって参照される列に対して明示的に指定できます。

列または式に対してOLDNEWの両方を省略すると、DML実行後の列値(DELETEの実行前の値)またはDML実行後の列値を使用して計算された式の結果が返されます。

定数でOLDおよびNEWを指定することは有効ですが(OLD 1など)、キーワードは無視されます。OLDおよびNEWは、仮想列では現在サポートされていません。

ノート:

UPDATE文には更新前と更新後の両方の列値がありますが、INSERT文にはOLD列値がなく、DELETE文にはNEW列値がありません。このような場合のOLDおよびNEWの使用は有効ですが、何も返されません。

column

データベース表の列の名前の値を持つ式。

into_clause

文によって戻される列値を格納する変数またはレコードを指定します。

into_clauseの制限

dynamic_sql_stmt(「EXECUTE IMMEDIATE文」を参照)が単一行を戻すことができる場合にのみ、dynamic_returning_clause内でinto_clauseを使用します。

record

文によって戻される行を格納するレコード変数の名前。文内の各select_listに対して、レコードの中に、対応する型互換のフィールドが存在している必要があります。

variable

文によって戻された列を格納するスカラー変数の名前、またはPL/SQLホスト環境で宣言され、バインド変数としてPL/SQLに渡されるホスト・カーソル変数の名前。文内の各select_list項目に対して、対応する型互換の変数が存在している必要があります。ホスト・カーソル変数のデータ型は、PL/SQLカーソル変数の戻り型と互換性があります。

bulk_collect_into_clause

文によって戻された行を格納する1つ以上の既存のコレクションまたはホスト配列を指定します。文内の各select_list項目に対して、bulk_collect_into_clauseには、対応する型互換のcollectionまたはhost_arrayが存在している必要があります。

この句を使用する理由は、「バルクSQLおよびバルク・バインド」を参照してください。

bulk_collect_into_clauseの制限

  • dynamic_sql_stmt(「EXECUTE IMMEDIATE文」を参照)が複数行を戻すことができる場合にのみ、dynamic_returning_clause内でbulk_collect_into_clause句を使用します。

  • bulk_collect_into_clauseは、クライアント・プログラムでは使用できません。

  • bulk_collect_into_clauseを含む文で暗黙のデータ型変換が必要な場合、bulk_collect_into_clauseに含めることができるのはcollectionまたはhost_arrayを1つのみです。

collection

文によって戻される行を格納するコレクション変数の名前。

collectionの制限

  • collectionに、文字列で索引付けされた連想配列の名前は使用できません。

  • 暗黙的なデータ型変換が文に必要となる場合、collectionにコンポジット型のコレクションの名前は使用できません。

:host_array

PL/SQLホスト環境で宣言され、バインド変数としてPL/SQLに渡される配列の名前。コロン(:)とhost_arrayの間に空白は入れないでください。

  • 例6-58UPDATE文を使用したレコード変数への値の代入

  • 例7-1静的SQL文

  • 例13-252つのネストした表に対する削除行の戻し

  • 例13-26更新された行のNEWおよびOLD値の戻し

  • 例13-27FORALL文でのRETURN BULK COLLECT INTO付きのDELETE