Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
German Профи
Вступление в Клуб: 25.06.2007
|
Пт Мар 26, 2010 13:35  Грабли 2 |
|
Полезность: 1
|
Приходилось наступать вот так:
1. Пишем
Код: | begin
locate x in ::[AC_FIN] where x.[MAIN_V_ID] = 'XXXX';
pragma error('Счёт нашли');
end; |
Всё работает
2. Вспоминаем, что забыли обработать случай, когда счета нет, добавляем exception
Код: | begin
locate x in ::[AC_FIN] where x.[MAIN_V_ID] = 'XXXX';
pragma error('Счёт нашли');
exception when others then
null;
end; |
Больше не работает
Причина очевидна, но я, помнится, поломал голову... _________________ Homo homini |
|
 |
dnk_dz Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Мар 31, 2010 23:06   |
|
Полезность: Нет оценки
|
Для Вас причина очевидна. Для остальных, может, нет. Может быть подробнее опишите? |
|
 |
German Профи
Вступление в Клуб: 25.06.2007
|
Чт Апр 01, 2010 13:04   |
|
Полезность: 2
|
Пожалуйста, опишу подробнее.
exception с условием when others перехватывает все критичные ошибки, в том числе pragma error. И вместо неё выполняет null, то есть ничего никуда не выводит.
Решение - вместо pragma error использовать любой вариант debug, debug_pipe и т.д. или описывать конкретные исключения, такие как NO_DATA_FOUND или TOO_MANY_ROWS (для конструкций с exact), а более общий вариант с others не применять. _________________ Homo homini |
|
 |
ГлСП Профи
Вступление в Клуб: 20.09.2007
|
Пн Апр 05, 2010 05:06   |
|
Полезность: Нет оценки
|
тут я был не прав
Последний раз редактировалось: ГлСП (Пн Апр 05, 2010 13:40), всего редактировалось 1 раз |
|
 |
zinovjeva_n Участник - экстремал
Вступление в Клуб: 15.10.2008
|
Пн Апр 05, 2010 11:07   |
|
Полезность: Нет оценки
|
ГлСП пишет: | German пишет: | или TOO_MANY_ROWS (для конструкций с exact) |
Хочу вас разочаровать, но это исключение в данном случае работать не будет. Это на тему грабелек
Чтобы оно заработал нужно сделать вот так
Код: |
locate exact x in ::[AC_FIN] where x.[MAIN_V_ID] = 'XXXX';
|
|
Так человек же указал "(для конструкций с exact)". _________________ Coding for food |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|