Oracle
 sql >> база данни >  >> RDS >> Oracle

Какъв е ефективен начин за проследяване, идентифициране и докладване на всяко „съобщение за грешка“, изведено от вашето приложение?

За грешки, генерирани от вашето собствено приложение, обичайно решение е да имате таблица със съобщения за грешка като тази:

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

Типичен запис може да бъде:

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

След това във вашия код се обработват изключения нещо подобно:

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

Пакетът би направил нещо като:

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;

Крайният потребител ще види нещо като:

ERROR 479: End date cannot be earlier than start date

След това това може да се търси, за да се получат подробности за причината и действието.

По-усъвършенствана версия би позволила стойностите на данните да се показват в съобщенията, като се използват контейнери в текста за грешка като този:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как периодично да актуализирам моята локална база данни с промени от производствената база данни

  2. Какво трябва да инсталирам, за да използвам OraOLEDB

  3. Как да клонирате потребител в Oracle

  4. php:зареждането на драйвера на oracle дава грешка Не може да се зареди динамична библиотека - Посочената процедура не може да бъде намерена.

  5. Как да получите BLOB данни с помощта на oracle ODBC