ゆるふわエンジニアのブログ

行ったこと、調べたこと等をつらつらと書いていくかもしれません。

パラメータの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代入)しないようにしましょう。