最初のパラメータが評価されない場合でも、 OracleのNVL(および)関数が常に2番目のパラメータを評価する理由を誰かが知っていますか?NVL2NULL
簡単なテスト:
CREATE FUNCTION nvl_test RETURN NUMBER AS
BEGIN
dbms_output.put_line('Called');
RETURN 1;
END nvl_test;
SELECT NVL( 0, nvl_test ) FROM dual
を返します0が、も出力しCalledます。
nvl_test最初のパラメータがではないため、結果は無視されますが、が呼び出されNULLました。