sql >> Database teknologi >  >> RDS >> Oracle

Spørg Oracle for detaljer om ORA-kodefejl

Det er ikke tilgængeligt fra SQL, men inden for PL/SQL kan du bruge SQLERRM funktion.

For eksempel

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 selvfølgelig bygge en ora_code_desc funktion, der indtog en streng, fjernede de første tre tegn, sendte det resulterende tal til SQLERRM , og returnerede 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 sender også et hjælpeprogram på Unix-platforme oerr der giver flere detaljer - især årsagen og handlingen, du leder efter. Hvis du virkelig også vil have disse data, kan du skrive en lagret Java-procedure, der kaldte ud til en operativsystem-skal, udførte en oerr kommando og returnerede resultatet. Det ville give dig flere data, men det ville naturligvis være meget mere komplekst.



  1. SQL parser i PHP?

  2. hvordan man bruger sessioner og arrays i en databaseforespørgsel til at gemme og vise data

  3. underforespørgsel (forkerte argumenter til MOD) ved hjælp af Mysql

  4. slet duplikerede poster i tabellen