|
|
|
новичок
      
участник
Last Login: 25.04.2002 17:15
Сообщ.: 5,
Visits: 56
|
|
Доброе время суток, уважаемые :) подскажите, пожалуйста, где я не прав. надо выбрать одно значение из таблицы в переменную пишу :
select ROOTKDOG into v_kdogroot from dogdepend where kdogemp = p_kdog1; if sql%notfound then v_kdogroot:=p_kdog1; end if;
вываливает NO_DATA_FOUND. так оно есть, поэтому и пишу if sql%notfound но зачем мне эксепшен? не делать же курсор ради одной переменной :-(
|
|
|
|
|
Forum Member
      
участник
Last Login: 13.11.2003 10:53
Сообщ.: 43,
Visits: 474
|
|
Mozno postupit', naprimer, tak:
begin select ROOTKDOG into v_kdogroot from dogdepend where kdogemp = p_kdog1; exception when NO_DATA_FOUND then v_kdogroot:=p_kdog1; end;
To est' prosto perehvatit' exception i obrabotat' ego tak kak hochetsya.
|
|
|
|
|
новичок
      
участник
Last Login: 25.04.2002 17:15
Сообщ.: 5,
Visits: 56
|
|
| Спасибо, но мне нужна эта переменная дальше в коде, а после эксепшена процедура завершает работу.
|
|
|
|
|
Forum Member
      
участник
Last Login: 13.11.2003 10:53
Сообщ.: 43,
Visits: 474
|
|
>после эксепшена процедура завершает работу.
Eto ne sovsem tak...
declare v_kdogroot ....; begin ........ begin select ROOTKDOG into v_kdogroot from dogdepend where kdogemp = p_kdog1; ..... -- lines of code #X exception when NO_DATA_FOUND then v_kdogroot:=p_kdog1; end; ..... -- Переменную v_kdogroot можно будет использовать здесь, даже если возникло перехваченное исключение (однако код #X будет пропущен)
end;
|
|
|
|
|
новичок
      
участник
Last Login: 25.04.2002 17:15
Сообщ.: 5,
Visits: 56
|
|
Точно-точно, спасибо. что называется за деревьями и леса не заметил :)
|
|
|
|
|
Forum Member
      
участник
Last Login: 13.11.2003 10:53
Сообщ.: 43,
Visits: 474
|
|
|
|
|
|
Junior Member
      
участник
Last Login: 23.10.2002 13:53
Сообщ.: 22,
Visits: 243
|
|
| %notfound лучше использовать в курсорах или в конструкциях update или delete, т.к. в них, если ни одна запись не будет найдена, никакой ошибки не произойдет, а здесь при select...into возникает реальный эксепшен, и его надо обрабатывать.
|
|
|
|
|
новичок
      
участник
Last Login: 19.04.2002 17:48
Сообщ.: 1,
Visits: 12
|
|
Необходимо поместить select pl блок и добавить exception no_data_found declare fff ....; Begin begin select .. into fff from ... where ....; exception when no_data_found then fff := .....; end; End; и все будет работать
|
|
|
|
|
Forum Guru
      
участник
Last Login: 24.04.2002 10:25
Сообщ.: 72,
Visits: 793
|
|
| | |