Условное ВСТАВЛЕНИЕ / ОБНОВЛЕНИЕ в Oracle 9i (PL / SQL) - PullRequest
2 голосов
/ 20 мая 2011

Я пытаюсь построить запрос, чтобы ВСТАВИТЬ или ОБНОВИТЬ / УДАЛИТЬ строку в зависимости от некоторых условий.Я пытался использовать предложение MERGE, но у него есть некоторые ограничения, которые не позволяют мне изменять некоторые поля.

Вот код:

MERGE INTO CADUSUNET t

USING (select 'FELIPE' as nomusunet from cademp where rownum = 1) v --generate the column and the value to compare
  ON (t.nomusunet = v.nomusunet)

WHEN MATCHED THEN
  UPDATE SET t.nomusunet = 'FELIPE BUENO' --I can't update a column that is referenced in the ON condition clause

WHEN NOT MATCHED THEN
  INSERT (nomusunet) VALUES ('FELIPE BUENO')

Есть ли способ сделать это

1 Ответ

2 голосов
/ 20 мая 2011

Вы можете сделать это:

begin
 update CADUSUNET t
 set t.nomusunet = 'FELIPE BUENO'
 where t.nomusunet = 'FELIPE';

 if sql%rowcount = 0 then
   INSERT INTO CADUSUNET (nomusunet) VALUES ('FELIPE BUENO');
 end if;
end;
...