Sometimes whenever we want to insert records into table with the conditions For existing records (if found then) Update, For Non Existing records (If not found) then insert
Step 1 :
CREATE table a_merge
as select empno , ename
from emp;
Now the PL/SQL Block or SQL query:
DECLARE
l_start NUMBER;
BEGIN
l_start := DBMS_UTILITY.get_time;
MERGE INTO a_merge e
USING (SELECT empno AS id, ename AS ename FROM emp) h
ON (e.empno = h.id)
WHEN MATCHED
THEN
UPDATE SET e.ename = h.ename
WHEN NOT MATCHED
THEN
INSERT (empno, ename)
VALUES (h.id, h.ename);
DBMS_OUTPUT.put_line (DBMS_UTILITY.get_time - l_start || ' hsecs');
END;