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