Ако оптимизаторът реши, че не е необходимо да оценява функция, той няма да го направи, така че функцията никога няма да хвърля изключения:
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