ऐसे कई अपवाद हैं जिन्हें 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
।