用SCOTT/TIGER登录。
MERGE是oracle 9i中引入的,一般就是UPDATE或者INSERT,从10g开始可以进行DELETE。
创建表EMP1,并清空数据:
CREATE TABLE EMP1 AS SELECT * FROM EMP;
TRUNCATE TABLE EMP1;
使用MERGE:
MERGE INTO EMP1 T1 USING EMP T2 ON (T1.EMPNO = T2.EMPNO)
WHEN MATCHED THEN
UPDATE SET T1.SAL = T2.SAL * 2 --没有分号
WHEN NOT MATCHED THEN
INSERT VALUES (T2.EMPNO, T2.ENAME, T2.JOB, T2.MGR,
T2.HIREDATE, T2.SAL, T2.COMM, T2.DEPTNO); --有分号
COMMIT;
运行一次:
再次运行:
使用DELETE:
MERGE INTO EMP1 T1 USING EMP T2 ON (T1.EMPNO = T2.EMPNO)
WHEN MATCHED THEN
UPDATE SET T1.SAL = T2.SAL * 2 --没有分号
DELETE WHERE T1.JOB = 'CLERK' --没有分号
WHEN NOT MATCHED THEN
INSERT VALUES (T2.EMPNO, T2.ENAME, T2.JOB, T2.MGR,
T2.HIREDATE, T2.SAL, T2.COMM, T2.DEPTNO); --有分号
COMMIT;
运行前先
TRUNCATE TABLE EMP1;
然后运行MERGE INTO,结果:
再次运行,结果: