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

Apa cara efektif untuk melacak, mengidentifikasi, dan melaporkan setiap 'pesan kesalahan' yang diajukan oleh aplikasi Anda?

Untuk kesalahan yang ditimbulkan oleh aplikasi Anda sendiri, solusi umum untuk memiliki tabel pesan kesalahan seperti ini:

create table errors
    ( error_no integer primary key
    , error_text varchar2(200)
    , error_cause varchar2(4000)
    , error_action varchar2(4000)
    );

Entri tipikal mungkin:

insert into errors (error_no, error_text, error_cause, error_action)
values (479, 'End date cannot be earlier than start date',
        'A start date and an end date were entered where the end date was before the start date, which is not allowed.',
        'Correct the start and end dates and retry.'
       );

Kemudian dalam kode Anda menangani pengecualian seperti ini:

if p_start_date > p_end_date then
    error_pkg.raise_error (479);
end if;

Paket akan melakukan sesuatu seperti:

procedure raise_error (p_error_no integer)
is
    l_text errors.error_text%type;
begin
    select error_text into l_text
    from   errors
    where  error_no = p_error_no;
    raise_application_error(-20001, l_text);
end;

Pengguna akhir akan melihat sesuatu seperti:

ERROR 479: End date cannot be earlier than start date

Ini kemudian dapat dicari untuk mendapatkan detail penyebab dan tindakan.

Versi yang lebih maju akan memungkinkan nilai data ditampilkan dalam pesan, menggunakan placeholder dalam teks kesalahan seperti ini:

insert into errors (error_no, error_text, error_cause, error_action)
values (456, 'Invalid action code: [1]',
        'An invalid action was specified', 'Correct the action code and retry.'
       );

error_pkg.raise_error (456, p_act_code);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ResultSetMetaData getScale mengembalikan 0

  2. Buat tabel bersarang dan masukkan data hanya di tabel bagian dalam

  3. Percepat to_sql() saat menulis Pandas DataFrame ke database Oracle menggunakan SqlAlchemy dan cx_Oracle

  4. Mencocokkan nilai kolom duplikat Oracle menggunakan Soundex, Jaro Winkler dan Edit Distance (UTL_MATCH)

  5. Lanjutkan MERGE setelah PENGECUALIAN