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

Откуда: Киев
Сообщений: 1135
Есть желание что-то сделать типа такого:

declare
  e exception;
  pragma exception_init(e,-1);
begin
  if <something wrong> then
    set var ...  --??
   raise e;
  end if;
end;


на выходе получить вменяемое сообщение с exception, а не
ORA-00001: unique constraint (.) violated
ORA-06512: at line 6

Тоесть с именем констрейнта или другого параметра в других exceptions

Можно такое сделать?
Заранее благодарен!
---
Ну ты заходи ежели чё...
22 фев 17, 18:49    [20238232]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
AmKad
Member

Откуда:
Сообщений: 5222
raise_application_error?
22 фев 17, 19:08    [20238290]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
Elic
Member

Откуда:
Сообщений: 29991
AmKad
raise_application_error
мимикрировать не поможет.
И наверное, слава богу.
22 фев 17, 19:13    [20238301]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
Takurava
Member

Откуда:
Сообщений: 1776
Elic
мимикрировать не поможет.
В каком смысле?
27 фев 17, 16:43    [20247962]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
Elic
Member

Откуда:
Сообщений: 29991
Takurava
Elic
мимикрировать не поможет.
В каком смысле?
Перечитываем исходный вопрос.
27 фев 17, 16:50    [20247998]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
atrkarrr
Guest
Двоюшник
Тоесть с именем констрейнта или другого параметра в других exceptions

SQLERRM разве не выводит имя констрейнта?
Немного интереснее и полезнее имхо сделать привязку исключений к предметной области, чтобы для пользователя выводилось не имя констрейнта, а человеческое сообщение
27 фев 17, 17:07    [20248089]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
-2-
Member

Откуда:
Сообщений: 15330
atrkarrr
человеческое сообщение
в пределах 30 байт ни в чем себе не отказывай.
27 фев 17, 18:39    [20248397]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Двоюшник,

ты расскажи конкретную ситуацию.
Наверняка есть простой выход.
27 фев 17, 18:40    [20248399]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр в эксепшн  [new]
кто тут?
Guest
Двоюшник,

declare
  l_num         number;
  hz_exception  exception;
  pragma exception_init(hz_exception, -20001);
begin
  select 1 /*2*/
  into l_num
  from dual;  
  
  if
    l_num = 1 then raise_application_error(-20000, 'Custom error 1'); 
  else 
    raise hz_exception;
  end if;
end;
/
27 фев 17, 18:44    [20248405]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить