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

Oracle:Apakah ada cara untuk mendapatkan kesalahan sintaks SQL terbaru?

Anda dapat membuat pemicu di Oracle yang akan mencatat semua kesalahan (atau hampir semua - NO_DATA_FOUND tidak dianggap sebagai kesalahan). Dalam contoh di bawah ini, setiap kesalahan dalam skema dicatat dalam tabel TRACK_DETAIL (kesalahan dalam satu baris, SQL gagal di baris berikutnya). Anda dapat membuatnya lebih canggih dengan nomor urut, tanggal/waktu dll.

create table track_detail (val varchar2(4000));

create or replace procedure track (p_text IN VARCHAR2) IS
  PRAGMA AUTONOMOUS_TRANSACTION;
begin
  insert into track_detail(val)
  values (p_text);
  commit;
end;
.
/
create or replace TRIGGER log_err after servererror on schema
DECLARE
  v_temp VARCHAR2(2000) := substr(dbms_utility.format_error_stack,1,2000);
  v_num NUMBER;
  v_sql_text ora_name_list_t;
begin
  v_temp := translate(v_temp,'''','"');
  track(v_temp);
  v_num  := ora_sql_txt(v_sql_text);
  v_temp := null;
  BEGIN
    FOR i IN 1..v_num LOOP
      v_temp := v_temp || v_sql_text(i);
    END LOOP;
  EXCEPTION
    WHEN VALUE_ERROR THEN NULL;
  END;
  v_temp := translate(v_temp,''''||chr(0)||chr(10),'"');
  track(v_temp);
end;
/

Ingatlah untuk menjatuhkan (atau menonaktifkan) pemicu setelah Anda selesai menggunakannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Prosedur Tersimpan PL/SQL Dengan Parameter Di Database Oracle

  2. Bagaimana cara mengetahui kapan tabel tertentu dibuat di Oracle?

  3. Bagaimana menjalankan file .sql di alat pengembang Oracle SQL untuk mengimpor database?

  4. Mengapa EXECUTE IMMEDIATE diperlukan di sini?

  5. cara mengatur kolom kenaikan otomatis dengan pengembang sql