NO_DATA_FOUND исключение - PullRequest
       1

NO_DATA_FOUND исключение

1 голос
/ 20 июня 2011

Как узнать, какой SELECT сгенерировал NO_DATA_FOUND?

Пример:

CREATE [..]
DECLARE
--
BEGIN
  SELECT [...];   -- will this
  SELECT [...];   -- or this to generate NO_DATA_FOUND ?
EXEPCTION
WHEN NO_DATA_FOUND THEN
  [...]
END;

Ответы [ 2 ]

4 голосов
/ 20 июня 2011

Вы можете сделать это:

DECLARE
--
BEGIN
  BEGIN
    SELECT [...];   -- will this
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      [...]
  END;
  BEGIN
    SELECT [...];   -- or this to generate NO_DATA_FOUND ?
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      [...]
  END;
END;

Или:

DECLARE
  l_where_am_i number;
BEGIN
  l_where_am_i := 1;
  SELECT [...];   -- will this
  l_where_am_i := 2;
  SELECT [...];   -- or this to generate NO_DATA_FOUND ?
EXEPCTION
  WHEN NO_DATA_FOUND THEN
    CASE l_where_am_i
       WHEN 1 THEN [...]
       WHEN 2 THEN [...]
    END CASE;
END;
2 голосов
/ 20 июня 2011

Другой вариант - использовать dbms_utility.format_error_backtrace, как показано ниже (хотя было бы лучше отправить эти данные в процедуру регистрации ошибок). Эта функция выдаст вам номер строки, на которой произошла ошибка.

CREATE [..]
DECLARE
--
BEGIN
  SELECT [...];   -- will this
  SELECT [...];   -- or this to generate NO_DATA_FOUND ?
EXEPCTION
WHEN NO_DATA_FOUND THEN
  [...]
  dbms_output.put_line(dbms_utility.format_error_backtrace());
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...