Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 TRIGGER AFTER SERVERERROR  [new]
wankel
Member

Откуда:
Сообщений: 36
Добрый день!


пытаюсь отловить ошибку 28001.
Создал триггер

CREATE OR REPLACE TRIGGER logon_failures
  AFTER SERVERERROR ON DATABASE
BEGIN
  IF (IS_SERVERERROR(28001)) THEN
      raise_application_error(-20000, '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
  end if;
END logon_failures;

но при логоне

SQL> conn test@test
Enter password:
ORA-28001: the password has expired

моего сообщения не видно. при этом, на ошибке 1017 - срабатывает.
Подскажите что не так сделал??

RDBMS 11.2.0.1
6 сен 11, 18:06    [11236918]     Ответить | Цитировать Сообщить модератору
 Re: TRIGGER AFTER SERVERERROR  [new]
DВА
Member

Откуда:
Сообщений: 5439
видимо оракл считает ORA-28001 не SERVERERROR, а апликейшн еррор :)
6 сен 11, 18:34    [11237120]     Ответить | Цитировать Сообщить модератору
 Re: TRIGGER AFTER SERVERERROR  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Потому что это не совсем ошибка, а скорее предупреждение/информация. Т.е. реально логин прошел
Клиентское приложение может отловить ее при логине и попросить юзера поменять пароль
Справедливости ради стоит заметить, что OCILogon возращает -1 (OCI_ERROR), а не 1 (OCI_SUCCESS_WITH_INFO), что на мой взгляд было бы логичнее
7 сен 11, 02:23    [11238239]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить