Обработка exception в declare

читающий
Дата: 12.10.2015 17:44:26
Возник вопрос возможности обработки exception в секции declare.
К примеру есть такая функция

CREATE OR REPLACE FUNCTION test_exc_decl(p_numb NUMBER) RETURN NUMBER IS
  v_res NUMBER := 90 p_numb;
BEGIN
  RETURN(100 * v_res);
END;


При входном параметре равном 0 получим необрабатываемый exception в declare (деление на ноль).
Можно его как-то обработать?
читающий
Дата: 12.10.2015 17:45:21
CREATE OR REPLACE FUNCTION test_exc_decl(p_numb NUMBER) RETURN NUMBER IS
  v_res NUMBER := 90 / 0;
BEGIN
  RETURN(100 * v_res);
END;
читающий
Дата: 12.10.2015 17:46:26
Да что ж такое(((


Вот не косячный код

CREATE OR REPLACE FUNCTION test_exc_decl(p_numb NUMBER) RETURN NUMBER IS
  v_res NUMBER := 90 / p_numb;
BEGIN
  RETURN(100 * v_res);
END;
Vadim Lejnin
Дата: 12.10.2015 17:52:31
CREATE OR REPLACE FUNCTION test_exc_decl(p_numb NUMBER) RETURN NUMBER IS
  v_res NUMBER := 90 / p_numb;
BEGIN
  RETURN(100 * v_res);
EXCEPTION
WHEN ZERO_DIVIDE THEN RAISE_APPLICATION_ERROR(-20003,'OPS... ZERO');
END;
moishamiem
Дата: 12.10.2015 17:57:40
Vadim Lejnin,

А ты сам пробовал? Если да, то на какой версии базы, может я отстал от жизни?
Elic
Дата: 12.10.2015 18:00:41
читающий
Можно его как-то обработать?
Только снаружи. Хочешь внутри - выноси инициализацию из объявлений.
ArtNick
Дата: 12.10.2015 18:04:10
читающий
Да что ж такое(((


Вот не косячный код

CREATE OR REPLACE FUNCTION test_exc_decl(p_numb NUMBER) RETURN NUMBER IS
  v_res NUMBER :=[color=red] 90 / p_numb;[/color]
BEGIN
  RETURN(100 * v_res);
END;


нарушаем правила п.2.7
Elic
Дата: 12.10.2015 18:05:55
Vadim Lejnin
EXCEPTION
WHEN
Помощничек, RTFM Propagation of Exceptions Raised in Declarations (FAQ)
Elic
Дата: 12.10.2015 18:08:06
ArtNick
нарушаем правила п.2.7
И где стоит этот забор?
Vadim Lejnin
Дата: 12.10.2015 18:11:16
Elic
Vadim Lejnin
EXCEPTION
WHEN
Помощничек, RTFM Propagation of Exceptions Raised in Declarations (FAQ)


Элик, как всегда прав.
а я не дочитал постановку задачи.