क्या किसी को पता है, क्यों ओरेकल के NVL
(और NVL2
) फ़ंक्शन हमेशा दूसरे पैरामीटर का मूल्यांकन करता है, भले ही पहला पैरामीटर NULL
न हो?एनवीएल हमेशा दूसरे पैरामीटर का मूल्यांकन क्यों करता है
सरल टेस्ट:
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
नहीं है।
चेतावनी: यह 9i में शॉर्ट-सर्किट नहीं है। –