Я пытаюсь вставить запись в мою таблицу, если она еще не существует.
Если он существует, я хочу его обновить.
Я видел этот пример, опубликованный кем-то другим:
MERGE INTO mytable d
USING (SELECT 1 id, 'x' name from dual) s
ON (d.id = s.id)
WHEN MATCHED THEN UPDATE SET d.name = s.name
WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);
Моя текущая хранимая процедура выглядит следующим образом:
procedure savePublicId(P_ACCNO in varchar2, P_PUBLICID in varchar2) is
begin
update cc_custprofiles cpr
set cpr.publicid = P_PUBLICID
where cpr.customerlong_cpr = 'C'||P_ACCNO
and key_cpr = 'SINGLE';
commit;
end;
В этой таблице нет столбцов идентификации (я знаю ...), поэтому я не могу сделать улов.
Я пытался изменить это merge
, чтобы оно соответствовало структуре моей таблицы, но я новичок в Oracle, поэтому не совсем уверен, что я делаю: D
Я придумал это:
merge into cc_custprofiles cpr
using (select 1 customerlong_cpr, 'x' publicid, 'SINGLE' key_cpr from dual) dual
on (cpr.customerlong_cpr = dual.customerlong_cpr)
when matched then update set cpr.publicid = P_PUBLICID
WHEN NOT MATCHED THEN INSERT (customerlong_cpr, publicid, key_cpr) values (P_ACCNO, P_PUBLICID, 'SINGLE');
Но я не думаю, что это правильно. Может кто-нибудь помочь мне с этим, пожалуйста?