sql >> Databáze >  >> RDS >> Oracle

Jaký je účinný způsob sledování, identifikace a hlášení každé „chybové zprávy“ vyvolané vaší aplikací?

Pro chyby vyvolané vaší vlastní aplikací je běžným řešením mít tabulku chybových zpráv, jako je tato:

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

Typický záznam může být:

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

Pak ve svém kódu zpracujte výjimky něco takového:

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

Balíček udělá něco jako:

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;

Koncový uživatel by viděl něco jako:

ERROR 479: End date cannot be earlier than start date

To by pak bylo možné vyhledat a získat podrobnosti o příčině a akci.

Pokročilejší verze by umožnila zobrazení datových hodnot ve zprávách pomocí zástupných symbolů v textu chyby, jako je tento:

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. CONCAT s GROUP_CONCAT v mysql

  2. Escape dvojité uvozovky s proměnnou uvnitř HTML echo

  3. Výkon UUID v MySQL?

  4. aktualizovat prohlášení oracle nefunguje