Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

स्ट्रिंग को दिनांक में कनवर्ट करना और दिए जाने पर अपवाद उठाना स्ट्रिंग अमान्य है

ऐसे कई अपवाद हैं जिन्हें TO_DATE . तक फेंका जा सकता है समारोह। उदाहरण:

  • ORA-01843 - अमान्य माह मान
  • ORA-01847 - अमान्य दिन मान
  • ORA-01830 - संपूर्ण इनपुट स्ट्रिंग को कनवर्ट करने से पहले दिनांक स्वरूप चित्र समाप्त हो जाता है
  • ...

आप उन्हें निम्न उदाहरण के रूप में पकड़ सकते हैं (केवल एक अपवाद के साथ):

Create or Replace Procedure A1SF_TESTDATE
(
    pDateStr Varchar2

    -- you must do this for every oracle exception number which will you catch
    bad_month EXCEPTION;
    PRAGMA EXCEPTION_INIT (bad_month, -01843);
)As
    tDate Date;
    Begin
    tdate := TO_DATE(pDateStr, 'yyyymmdd');
    dbms_output.put_line(tdate);
    Exception 
      When bad_month Then
        dbms_output.put_line('The format provided is incorrect');

End;

लेकिन उसके लिए आपको n . को परिभाषित करना होगा प्राग्मास!

आसान समाधान, जो मुझे पसंद है, वह है:

Create or Replace Procedure A1SF_TESTDATE
    (
        pDateStr Varchar2
    )As
        tDate Date;
Begin
        tdate := TO_DATE(pDateStr, 'yyyymmdd');
        dbms_output.put_line(tdate);
        Exception 
          -- every exception will be catched
          When others Then
            dbms_output.put_line('The format provided is incorrect! Because: ' || SQLERRM);

 End;

SQLERRM के लिए एक संभावित संदेश है ORA-01847: day of month must be between 1 and last day of month




  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 12.2 - NOPARTITION सुविधा का प्रतिस्थापन

  2. माइनस का उपयोग करने के बजाय ओरेकल में दो कर्सर की तुलना करना

  3. ORACLE . में LISTAGG

  4. मैं LIKE ऑपरेटर में कई शर्तें कैसे पेश कर सकता हूं?

  5. org.hibernate.MappingException:JDBC प्रकार के लिए कोई बोली मानचित्रण नहीं:2002