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

Zapytaj Oracle o szczegóły błędu kodu ORA

Nie jest dostępny z SQL, ale w PL/SQL możesz użyć SQLERRM funkcja.

Na przykład

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.

Możesz oczywiście zbudować ora_code_desc funkcja, która wzięła ciąg, usunęła pierwsze trzy znaki, przekazała wynikową liczbę do SQLERRM i zwrócił wynik

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 dostarcza również narzędzie na platformy Unix oerr który dostarcza więcej szczegółów – w szczególności przyczynę i działanie, którego szukasz. Jeśli naprawdę chcesz również tych danych, możesz napisać procedurę składowaną Java, która wywołuje powłokę systemu operacyjnego i wykonuje oerr polecenie i zwrócił wynik. Dałoby to więcej danych, ale oczywiście byłoby znacznie bardziej złożone.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyjście ODP.NET Parametr String nie zwraca wartości

  2. uruchom kod sql Oracle online

  3. Jak usunąć ukryte podwójne cudzysłowy w wartościach kolumn SQL Developer

  4. Jak uzyskać tabelę jako parametr wyjściowy w Oracle?

  5. Jak uzyskać milisekundy znacznika czasu od 1970 UTC w Oracle SQL?