sql >> Databasteknik >  >> RDS >> Oracle

Fråga Oracle för information om ORA-kodfel

Det är inte tillgängligt från SQL men inom PL/SQL kan du använda SQLERRM funktion.

Till exempel

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.

Du kan naturligtvis bygga en ora_code_desc funktion som tog in en sträng, tog bort de tre första tecknen, skickade det resulterande numret till SQLERRM , och returnerade resultatet

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 levererar också ett verktyg på Unix-plattformar oerr som ger mer detaljer – särskilt orsaken och åtgärden du letar efter. Om du verkligen vill ha den datan också kan du skriva en lagrad Java-procedur som anropade ett operativsystems skal, körde en oerr kommandot och returnerade resultatet. Det skulle ge dig mer data men skulle naturligtvis vara mycket mer komplext.



  1. Felet 'underrapporten kunde inte hittas på den angivna platsen. Kontrollera att underrapporten har publicerats och att namnet är korrekt'

  2. Kan inte ansluta till Amazon PostgreSQL RDS-databas på R med RPostgreSQL

  3. SQL Server 2008:Fel vid konvertering av datatyp nvarchar till float

  4. Hitta främmande nyckel som matchar flera radvärden