Я хочу обновить таблицу, но я хочу проверить, существует ли запись.Если нет, то выбросить исключение.В приложении C # я передаю параметры и выполняю команду следующим образом.
procedure usp_update_example
(
p_id in mydb.member.idn_member%type,
p_idn_person in mydb.member.idn_person%type,
p_ind_rep in mydb.member.ind_rep%type
)
as
v_exist pls_integer := 0;
v_step varchar2(250);
v_exception_not_exist exception;
begin
v_step := 'Check for record ' || p_id;
select count(1)
into v_exist
from mydb.member
where idn_member = p_id;
if v_exist = 0 then
raise v_exception_not_exist;
end if;
if (v_exist > 0) then
v_step := 'Update table :' || p_id;
update mydb.member
set
idn_person = p_idn_person,
ind_rep = p_ind_rep
where idn_member = p_id;
end if;
exception
when v_exception_not_exist then
Raise_application_error(-20001, 'Not exist');
end usp_update_example;
Однако, даже если мое условие верно, у меня есть запись, существующая в таблице.Я всегда получаю Not exist
исключение.Если я не использую if v_exist = 0
и использую WHEN NO_DATA_FOUND THEN
.Тогда все в порядке.
Я не уверен, что не так.