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

Hvad er en effektiv måde at spore, identificere og rapportere hver 'fejlmeddelelse', som din ansøgning rejser?

For fejl, der er rejst af din egen applikation, er en almindelig løsning at have en tabel med fejlmeddelelser som denne:

create table errors
    ( error_no integer primary key
    , error_text varchar2(200)
    , error_cause varchar2(4000)
    , error_action varchar2(4000)
    );

En typisk post kan være:

insert into errors (error_no, error_text, error_cause, error_action)
values (479, 'End date cannot be earlier than start date',
        'A start date and an end date were entered where the end date was before the start date, which is not allowed.',
        'Correct the start and end dates and retry.'
       );

Så i din kode håndtere undtagelser noget som dette:

if p_start_date > p_end_date then
    error_pkg.raise_error (479);
end if;

Pakken ville gøre noget som:

procedure raise_error (p_error_no integer)
is
    l_text errors.error_text%type;
begin
    select error_text into l_text
    from   errors
    where  error_no = p_error_no;
    raise_application_error(-20001, l_text);
end;

Slutbrugeren vil se noget i stil med:

ERROR 479: End date cannot be earlier than start date

Dette kunne derefter slås op for at få oplysninger om årsag og handling.

En mere avanceret version ville tillade, at dataværdier vises i meddelelserne ved at bruge pladsholdere i fejlteksten som denne:

insert into errors (error_no, error_text, error_cause, error_action)
values (456, 'Invalid action code: [1]',
        'An invalid action was specified', 'Correct the action code and retry.'
       );

error_pkg.raise_error (456, p_act_code);


  1. SQL:Undtagelse fra et ellers sorteret resultatsæt

  2. Forslag til sikkerhedskopiering af php site og mysql db

  3. PostgreSQL , Vælg mellem 2 tabeller, men kun det seneste element fra tabel 2

  4. SQL oprettelse af tabelafhængigheder