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

Minta Oracle untuk detail kesalahan kode ORA

Itu tidak dapat diakses dari SQL tetapi dalam PL/SQL, Anda dapat menggunakan SQLERRM fungsi.

Misalnya

SQL> ed
Wrote file afiedt.buf

  1  begin
  2    dbms_output.put_line( sqlerrm(0) );
  3    dbms_output.put_line( sqlerrm(-1041) );
  4* end;
SQL> /
ORA-0000: normal, successful completion
ORA-01041: internal error. hostdef extension doesn't exist

PL/SQL procedure successfully completed.

Anda tentu saja dapat membuat ora_code_desc fungsi yang mengambil string, menghapus tiga karakter pertama, meneruskan nomor yang dihasilkan ke SQLERRM , dan mengembalikan hasilnya

SQL> ed
Wrote file afiedt.buf

  1  create or replace function ora_code_desc( p_code in varchar2 )
  2    return varchar2
  3  is
  4    l_str varchar2(1000);
  5  begin
  6    l_str := sqlerrm( substr(p_code, 4 ) );
  7    return l_str;
  8* end;
SQL> /

Function created.

SQL> select ora_code_desc( 'ORA-00000' ) from dual;

ORA_CODE_DESC('ORA-00000')
--------------------------------------------------------------------------------
ORA-0000: normal, successful completion

Oracle juga mengirimkan utilitas pada platform Unix oerr yang memberikan lebih banyak detail-- terutama penyebab dan tindakan yang Anda cari. Jika Anda benar-benar menginginkan data itu juga, Anda dapat menulis prosedur tersimpan Java yang memanggil shell sistem operasi, menjalankan oerr perintah, dan mengembalikan hasilnya. Itu akan memberi Anda lebih banyak data, tetapi jelas akan jauh lebih kompleks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Query untuk mengembalikan N baris dari dual

  2. Pemantauan SQL di Pengembang SQL

  3. Prosedur tersimpan Rencana eksekusi SQL

  4. Oracle pilih untuk perilaku pembaruan

  5. Rangkaian Uji Pengaturan AOL/J