Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
RhinoFC
- Сообщения: 11
- Зарегистрирован: 17 ноя 2004, 09:36
Сообщение
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
права проверяются _до_ того, как выполняется тело процедуры. Так что перехватить нарушения доступа ты не можешь в принципе.
код ошибки нужен для обработки на клиентской стороне.