Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengonversi String ke Tanggal dan memunculkan pengecualian saat String yang diberikan tidak valid

Ada banyak pengecualian yang dapat dilontarkan oleh TO_DATE fungsi. Contoh:

  • ORA-01843 - Nilai bulan tidak valid
  • ORA-01847 - Nilai hari tidak valid
  • ORA-01830 - gambar format tanggal berakhir sebelum mengonversi seluruh string input
  • ...

Anda dapat menangkapnya seperti pada contoh berikut (dengan hanya satu pengecualian):

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;

Tetapi untuk itu Anda harus mendefinisikan n pragma!

Solusi yang lebih mudah, yang saya sukai, adalah:

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;

Kemungkinan pesan untuk SQLERRM adalah 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 tidak menghapus kursor setelah menutup set hasil

  2. Oracle sql - temukan item umum yang dibeli antara dua pengguna

  3. 12c kolom IDENTITAS

  4. Cara membagi satu kolom menjadi beberapa kolom

  5. BatchUpdateException:batch tidak akan dihentikan