Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

keberhasilan kueri yang tidak terduga

Jika pengoptimal memutuskan bahwa ia tidak perlu mengevaluasi suatu fungsi, itu tidak akan dilakukan, sehingga fungsi tersebut tidak akan pernah mengeluarkan pengecualian:

select 1 from dual where 1 = 1 OR to_date('asdasdasd','asdasdasdas') > sysdate ;

         1
----------
         1

Fungsi memunculkan pengecualian hanya jika itu benar-benar dievaluasi:

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

Namun, jika pengurai dapat memutuskan secara statis bahwa kueri tidak valid - karena fungsi memiliki tipe argumen yang salah atau kueri memiliki tipe yang tidak valid, maka parser akan memunculkan pengecualian sebelum pengoptimal menjalankannya:

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. Contoh Untuk Kursor PLSQL - Kursor Eksplisit, Implisit, dan Ref

  2. Akses kursor dengan nama kolom secara dinamis

  3. Mengoptimalkan ukuran pengambilan JDBC dengan menggunakan application.properties Spring Boots

  4. SQL Group By - menghitung catatan per bulan/tahun, kesalahan saat memasukkan - BUKAN BULAN VALID

  5. Pengecoran Tipe Oracle