MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。下面看个具体例子:
- hr@ORCL> select * from p;
-
- ID NAME
- ---------- ----------
- 1 d
- 3 e
- 8 f
-
- hr@ORCL> select * from t;
-
- ID NAME
- ---------- ----------
- 1 a
- 2 b
- 3 c
-
- hr@ORCL> merge into t using p
- 2 on (t.id=p.id)
- 3 when matched then
- 4 update set
- 5 t.name=p.name
- 6 when not matched then
- 7 insert values
- 8 (p.id,p.name)
- 9 ;
-
- 3 rows merged.
-
- hr@ORCL> select * from t;
-
- ID NAME
- ---------- ----------
- 1 d
- 2 b
- 3 e
- 8 f
-
- hr@ORCL> commit;
-
- Commit complete.
下面稍微修改一下例子:
- hr@ORCL> insert into p values(1,"h");
-
- 1 row created.
-
- hr@ORCL> commit;
-
- Commit complete.
-
- hr@ORCL> merge into t using p
- 2 on (t.id=p.id)
- 3 when matched then
- 4 update set
- 5 t.name=p.name
- 6 when not matched then
- 7 insert values
- 8 (p.id,p.name)
- 9 ;
- merge into t using p
- *
- ERROR at line 1:
- ORA-30926: unable to get a stable set of rows in the source tables
Oracle 横表、纵表一点记录rman系列之进入rman相关资讯 Oracle基础
- Oracle基础介绍及常用相关SQL*PLUS (03月11日)
- Oracle 角色的两个特性和误区 (09/04/2012 05:56:16)
- Oracle rac11.2.0.3.0的vip在重启 (09/02/2012 10:00:39)
| - Oracle中删除用户遇到的问题 (09/08/2012 20:01:42)
- IMP-00008: unrecognized (09/02/2012 10:03:25)
- 在Oracle数据库上设置限制ip地址访 (09/02/2012 09:59:55)
|
本文评论 查看全部评论 (0)