Перехват исключения (SQLCode -551)

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
RhinoFC
Сообщения: 11
Зарегистрирован: 17 ноя 2004, 09:36

Перехват исключения (SQLCode -551)

Сообщение RhinoFC » 15 авг 2005, 12:11

IB 7.0
Код процедуры:

Код: Выделить всё

begin
  for select f1, f2, f3 from view1
    into :f1, :f2, :f3
  do
  begin
    ...
  end
/*  when any do */
  when sqlcode -551 do
  begin
    ...
  end
end
Исключение возникает в том случае, если процедуру выполняет пользователь, не имеющий прав на просмотр представления view1.
Но, вопреки ожиданиям, это исключение не перехватывается в блоке when..do.
Помогите! Чего я не знаю? Можно ли перехватить это исключение в теле хранимой процедуры? Если нет, то зачем вообще нужен SQLCODE -551 ?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 15 авг 2005, 13:50

права проверяются _до_ того, как выполняется тело процедуры. Так что перехватить нарушения доступа ты не можешь в принципе.

код ошибки нужен для обработки на клиентской стороне.

Ответить