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. Oracle में समर्थित प्रदेशों की सूची कैसे लौटाएं?

  2. क्या बीओएम के साथ यूटीएफ -8 के रूप में एन्कोड की गई फ़ाइल पर SQLPLUS स्क्रिप्ट चलाना संभव है?

  3. ऑरैकल डेटाबेस टेबल से अनुकूलित एक्सएमएल टैग के साथ एक्सएमएल फाइल जेनरेट करें

  4. PL/SQL प्रक्रिया:कुछ मानों के लिए विशेष हैंडलिंग के साथ अपरकेस नामों को initcaps में अपडेट करें

  5. एकाधिक केस स्टेटमेंट में उपनाम कॉलम नाम