sql >> Database >  >> RDS >> Oracle

Wat is een effectieve manier om elke 'foutmelding' van uw toepassing op te sporen, te identificeren en te rapporteren?

Voor fouten die door uw eigen toepassing worden veroorzaakt, is een veelvoorkomende oplossing om een ​​tabel met foutmeldingen als deze te hebben:

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

Een typisch item kan zijn:

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.'
       );

Behandel dan in uw code uitzonderingen als volgt:

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

Het pakket zou zoiets doen als:

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;

De eindgebruiker ziet zoiets als:

ERROR 479: End date cannot be earlier than start date

Dit kan dan worden opgezocht om de oorzaak en actiedetails te krijgen.

Een meer geavanceerde versie zou het mogelijk maken om gegevenswaarden in de berichten weer te geven, met tijdelijke aanduidingen in de fouttekst als volgt:

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. Hoe gebruik je JOIN in plaats van UNION om de buren van A OR B te tellen?

  2. Haal de eerste N-records van een JSON-array op met een Postgresql-query

  3. retourneer het gemiddelde van het aantal records na een groepering op instructie

  4. Microsoft Access – De basis