amiksam
Дата: 03.08.2005 11:31:07
Всем привет,
возник следующий вопрос: Что лучше (правильней, надежней) обрабатывать исключение или предварительными проверками его не допустить.
Пример:
ПЕРВЫЙ ВАРИАНТ:
begin
insert into table1 (id, name) values (:1, :2);
exception
when dup_val_on_index then
update table1 set name = :2 where id = :id;
end;
ВТОРОЙ ВАРИАНТ:
declare
lCount integer;
begin
select count(*) into lCount from table1 where id = :id;
if lCount = 0 then
insert into table1 (id, name) values (:1, :2);
else
update table1 set name = :2 where id = :id;
end if;
end;
hell
Дата: 03.08.2005 23:46:55
без мержа трудновато, но в общем случае можно так:
1) попробовать select into x for update;
2) если он прошел - радуемся, делаем апдейт и вываливаемся
3) если no_data_found - делаем инсерт.
При этом между 1-3 уже может произойти инсерт, что при этом надо сделать - или ничего или проапдейтить на наше значение - это уже зависит от задачи
"The CBO without stats is like a morning without coffee." T.Kyte