パラメータのIN/OUTと値/参照渡し(Oracle、ストアド)
ストアドプロシージャの関数やプロシージャで渡す、
パラメータのINやOUTの値/参照渡しでハマったのでメモ。
どうやら、仕様は下記の通りになっているようです。
パラメータモード | 値渡しか参照渡しか |
---|---|
IN | 参照渡し |
OUT | 値渡し |
IN OUT | 値渡し |
OUTやIN OUTの時でも参照渡しにしたい場合は、
パラメータモードの後ろに
NOCOPY
を付けるとできるようです。
以下、例。
PROCEDURE HOGE(ARG IN OUT NOCOPY NUMBER) IS -- 変数等の宣言 BEGIN -- 何かしらの処理 END;
一連の処理の流れでINで渡している情報を
クリア(NULL代入)しないようにしましょう。