यदि ऑप्टिमाइज़र यह निर्णय लेता है कि उसे किसी फ़ंक्शन का मूल्यांकन करने की आवश्यकता नहीं है, तो ऐसा नहीं होगा, इसलिए फ़ंक्शन कभी भी अपवाद नहीं फेंकेगा:
select 1 from dual where 1 = 1 OR to_date('asdasdasd','asdasdasdas') > sysdate ;
1
----------
1
फ़ंक्शन केवल तभी अपवाद उठाता है जब इसका वास्तव में मूल्यांकन किया जाता है:
SQL> select 1 from dual where 1 = 1 AND to_date('asdasd','asdas') > sysdate ;
select 1 from dual where 1 = 1 AND to_date('asdasd','asdas') > sysdate
*
ERROR at line 1:
ORA-01821: date format not recognized
हालांकि, अगर पार्सर स्थिर रूप से तय कर सकता है कि क्वेरी अमान्य है - क्योंकि फ़ंक्शन में गलत प्रकार के तर्क हैं या क्वेरी में अमान्य प्रकार हैं, तो ऑप्टिमाइज़र को स्विंग मिलने से पहले पार्सर अपवाद उठाएगा:
SQL> select 1 from dual where 1 = 1 or to_date('asdasdasd',0) > sysdate ;
select 1 from dual where 1 = 1 or to_date('asdasdasd',0) > sysdate
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
SQL> select 1 from dual where 1 = 1 or to_date('asdasdasd','asdasdasdas') > 42 ;
select 1 from dual where 1 = 1 or to_date('asdasdasd','asdasdasdas') > 42
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER