Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle:Có cách nào để lấy lỗi cú pháp SQL gần đây không?

Bạn có thể tạo một trình kích hoạt trong Oracle sẽ ghi lại tất cả các lỗi (hoặc gần như là tất cả - NO_DATA_FOUND không được coi là lỗi). Trong ví dụ bên dưới, bất kỳ lỗi nào trong lược đồ đều được ghi lại trong bảng TRACK_DETAIL (lỗi ở một hàng, lỗi SQL ở dòng tiếp theo). Bạn có thể làm cho nó phức tạp hơn với số thứ tự, ngày / giờ, v.v.

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;
/

Hãy nhớ thả (hoặc tắt) trình kích hoạt khi bạn đã hoàn tất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thay đổi lược đồ mặc định trong sql developer?

  2. Cách khôi phục cơ sở dữ liệu bằng RMAN

  3. Sự khác biệt giữa varchar và varchar2 trong Oracle là gì?

  4. Hibernate> CLOB> Oracle :(

  5. ODP.NET Oracle.ManagedDataAcess lỗi ORA-12570 ngẫu nhiên