Oracle の PL/SQL 関数のデフォルト値について簡単な質問があります。このプログラムを例に取ります。
create or replace
FUNCTION testFunction
(
varNumber IN NUMBER DEFAULT 0
)
RETURN NUMBER
AS
BEGIN
dbms_output.put_line(varNumber);
RETURN varNumber;
END;
ここでの考え方は、この関数が呼び出されたときに varNumber に値が指定されていない場合、値 0 を取るということです。
さて、私の問題は、値を持たないパラメーターの値として常に NULL を渡す Web サービスレイヤーから関数が呼び出されることです。Oracle は NULL を値として解釈するため、varNumber をデフォルトの 0 に初期化しません。
このアプローチが理にかなっている理由はわかりますが、この動作をオーバーライドし、NULL 値が渡された場合に、Oracle が明示的な DEFAULT 値を割り当て、関数ヘッダー?
手動チェックを行うオプションを検討しました...
IF(varNumber IS NULL) THEN
varNumber := 0;
END IF;
ただし、これが問題になる可能性のある関数は何百もありますが、関数ごとのパラメーターの数が多いことは気にしないでください。そのため、問題に対するより一般的な解決策を見つけることができれば幸いです。
あなたが与えることができる洞察に乾杯.