Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:Czy istnieje sposób na uzyskanie najnowszych błędów składni SQL?

W Oracle można utworzyć wyzwalacz, który będzie rejestrował wszystkie błędy (lub prawie wszystkie — NO_DATA_FOUND nie jest uważane za błąd). W poniższym przykładzie każdy błąd w schemacie jest rejestrowany w tabeli TRACK_DETAIL (błąd w jednym wierszu, błąd SQL w następnym). Możesz uczynić go bardziej wyrafinowanym za pomocą numeru sekwencji, daty/godziny itp.

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

Pamiętaj o upuszczeniu (lub wyłączeniu) wyzwalacza po jego zakończeniu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. to jest błąd ORA-12154:TNS:nie można rozwiązać podanego identyfikatora połączenia?

  2. Jak zainstalować program SQL Developer na komputerze Mac?

  3. WSJDBCConnection nie zawija obiektów typu Oracle jdbc Connection

  4. Jak obsłużyć wyjątki to_date w instrukcji SELECT, aby zignorować te wiersze?

  5. Jak zainstalować Oracle instantclient i pdo_oci na maszynie ubuntu?