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

Undtagelseshåndtering i Procedure med indlejrede funktioner i pl/sql

RAISE_APPLICATION_ERROR procedure har en tredje parameter, som styrer, om undtagelsen erstatter den aktuelle undtagelsesstak (standardadfærden) eller tilføjer den.

Så hvis du sender det TRUE det vil vise begge beskeder; i opkaldet fra din procedure:

...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
  TRUE);
END;

giver dig outputtet:

BEGIN
*
ERROR at line 1:
ORA-20101: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
ORA-20102: Circle Code is wrong or not available
ORA-06512: at line 2

For kun at vise beskederne og ikke de andre stakoplysninger, skal du manipulere stakken. Denne artikel kommer ind på, hvordan du bruger format_error_backtrace kode> for at udtrække de oplysninger, du er interesseret i, men desværre linket til BT pakken er død. Noget af det samme er dækket her . Grundlæggende skal du parse undtagelsesstrengen i linjer og kun vise dem, der starter med ORA-20% , tror jeg.

Men vær forsigtig med at miste information, der faktisk kan være afgørende. Især vil jeg foreslå, at du kun fanger de specifikke fejl, du leder efter, ikke OTHERS - lad det være, så du kan håndtere uventede fejl og ikke skjuler noget vigtigt.




  1. Introduktion af ny funktion - dødvandsanalyse

  2. Hvordan tvinges pascal-sag med Oracles Entity Framework-understøttelse?

  3. Hvorfor og hvornår skal jeg bruge SPARSE COLUMN? (SQL SERVER 2008)

  4. Sådan masseindsætter du kun nye rækker i PostreSQL