| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > exception на курсор |
| Автор: tvik 15.11.2006, 15:54 | ||
Подскажите пожалуйста, как сделать Exception на этот только цикл (если я делаю BEGIN перед FOR, то не работает правильно, если делать BEGIN после LOOP, то вылетает не видя ошибку) |
| Автор: 3x3 15.11.2006, 19:58 |
| А что должно происходить? А вообще, что делает код? Такое ощущение, что вы пытаетесь как-то хитро исполнить действие "вставить строку если она ещё не вставлена" и по выходе из цикла её отапдейтить? |
| Автор: tvik 16.11.2006, 12:24 |
| Нет все проще, в цикле я открываю курсор - all_doc_id(land.cd_id) FOR doc IN all_doc_id(land.cd_id) если курсор не вернул ни одной строки, то выполняем особую вставку, иначе заходим в цикл. Просто если возникиет ошибка NO_DATA_FOUND, то в моем случае она ее не видит, т.к., exception определен в цикле (по-моему) |
| Автор: LSD 16.11.2006, 12:34 | ||
Поставь в начало цикла:
|
| Автор: 3x3 16.11.2006, 14:43 | ||||
NO_DATA_FOUND случилась бы при явном вызове SELECT xxx INTO yyy WHERE false_condition.
Это-то понятно. Но ответ на вопрос зачем так делать мог бы подсказать более другой путь решения.. А мог бы и нет PS Вообще-то если ситуация отражает логику программы, то это не исключение. Если нужно просто проверить наличие строки в базе, то для этого служат выражения вида: select count(1) into your_variable from table_name where your_condition and rownum=1 А вот если при исполнении этого кода случится что-то исключительное - например таблица из базы пропала, вот на тот случай и exception. |