Il existe de nombreuses exceptions qui peuvent être levées par le TO_DATE
fonction. Exemples :
- ORA-01843 - Valeur de mois non valide
- ORA-01847 - Valeur de jour invalide
- ORA-01830 - l'image au format de date se termine avant la conversion de la chaîne d'entrée entière
- ...
Vous pouvez les attraper comme dans l'exemple suivant (avec une seule exception) :
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;
Mais pour cela, vous devez définir n pragmatiques !
La solution la plus simple, que je préfère, est :
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;
Un message possible pour SQLERRM
est ORA-01847: day of month must be between 1 and last day of month
.