Příkaz MERGE sloučí data mezi dvěma tabulkami. Použití DUAL nám umožňuje použít tento příkaz. Upozorňujeme, že toto není chráněno proti souběžnému přístupu.
create or replace
procedure ups(xa number)
as
begin
merge into mergetest m using dual on (a = xa)
when not matched then insert (a,b) values (xa,1)
when matched then update set b = b+1;
end ups;
/
drop table mergetest;
create table mergetest(a number, b number);
call ups(10);
call ups(10);
call ups(20);
select * from mergetest;
A B
---------------------- ----------------------
10 2
20 1