Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Логирование в теле процедуры / 4 сообщений из 4, страница 1 из 1
28.03.2017, 14:36
    #39428461
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование в теле процедуры
Есть порядка сотни процедур, вызываются из приложения (вложенных между собой вызовов нет). Встала задача залогировать их работу. Такая конструкция имеет право на существование? (схематично):

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
CREATE OR REPLACE PROCEDURE A1
AS 
  R NUMBER(1) := 0;
  I NUMBER(5, 3);

BEGIN
  INSERT INTO LOG_TABLE('BEGIN', ...)
    VALUES(SYSDATE, ...);

  BEGIN
    SAVEPOINT BEGIN_1;

    I := 7 / 2; /* для имитации исключения */
    ....
    /* один-два INSERT/UPDATE на одну/две таблицы */

    EXCEPTION
      WHEN OTHERS THEN
        ROLLBACK TO BEGIN_1;
        R := 1;
        INSERT INTO LOG_TABLE('ERROR', ...)
          VALUES(SYSDATE, ...);
  END;

  INSERT INTO LOG_TABLE('END', ...)
    VALUES(SYSDATE, ...);

  COMMIT;

  IF R <> 0 THEN
    RAISE_APPLICATION_ERROR(- 20000, SQLERRM);
  END IF;

  EXCEPTION
    WHEN OTHERS THEN
      ROLLBACK;
      RAISE_APPLICATION_ERROR(- 20000, SQLERRM);
END A1;



1. Должны фиксироваться факты начала, окончания и ошибки в теле.
2. Помимо фиксации факта ошибки - обработки ее, т.к. процедуры вызываются из приложения, ошибку необходимо вернуть приложению, поэтому накручено с R.

Буду рад любым откликам)
...
Рейтинг: 0 / 0
28.03.2017, 14:40
    #39428466
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование в теле процедуры
autonomous transaction
...
Рейтинг: 0 / 0
28.03.2017, 14:56
    #39428485
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование в теле процедуры
Вячеслав Любомудровautonomous transactionэто слишком очевидно
...
Рейтинг: 0 / 0
31.03.2017, 13:33
    #39430875
luigi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логирование в теле процедуры
Вячеслав Любомудров,

Спасибо, Вячеслав.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Логирование в теле процедуры / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]