Does anyone know, why Oracle's NVL
(and NVL2
) function always evaluate the second parameter, even if the first parameter is not NULL
?
Simple test:
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
returns 0
, but also prints Called
.
nvl_test
has been called, even though the result is ignored since first parameter is not NULL
.