ストアドプロシージャ や ファンクションの引数を参照渡しにしたい場合は
NOCOPY キーワードを使用します。
解説
ORACLEの引数にはIN、OUT、IN OUT の3種類がありますが、
デフォルトでは以下の動きをします。
- IN ⇒ 参照渡し(但し、代入は不可)
- OUT ⇒ 値渡し
- IN OUT ⇒ 値渡し
なので、NOCOPYを使う時は 「OUT」または「IN OUT」に対して使用します。
例)引数にNOCOPYを指定したサンプル
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE OR REPLACE PROCEDURE PRC_TEST( a IN NUMBER, b OUT NOCOPY NUMBER, c IN OUT NOCOPY VARCHAR2 ) IS --宣言 BEGIN --処理 END; |
備考
- INはデフォルトで参照渡しなのでNOCOPYを指定する必要はありません。