Oracle
 sql >> база данни >  >> RDS >> Oracle

неочакван успех на заявката

Ако оптимизаторът реши, че не е необходимо да оценява функция, той няма да го направи, така че функцията никога няма да хвърля изключения:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на данни след създаване на индекс в празна таблица или създаване на уникален индекс след вмъкване на данни в оракул?

  2. Oracle SQL грешка:липсва IN или OUT параметър при индекс::1

  3. Как мога да изчисля обобщените засегнати редове, ако има множество DML заявки в моя PLSQL блок?

  4. Защо текущата свързаност на Oracle ODAC не се вижда във VS 2013?

  5. java.sql.SQLException:Не е намерен подходящ драйвер jdbc:oracle:thin