oracle中merge的用法

来源:互联网 发布:乐视视频客户端mac 编辑:程序博客网 时间:2024/05/16 00:30
基本语法:
merge into a using b
on(a.id=b.id)
when matched then
update set a.value=b.value
when not matched then
insert values(value);
(注意:在oracle9i必须同时出现insert和update)
一 、10g下面的特点:
1、inser 和update可出现其中之一。
2、可对merge加条件:
merge into a using b
on(a.id=b.id)
when matched then
update set a.value=b.value
where b.id>=100;
3、可用delete子句,但是delete的条件必须放到最后,否则会报错。
merge into a using b
on(a.id=b.id)
when matched then
update a.value=b.value+100
delete where a.id=1;
二、无法在源表中获取一组稳定行时报错。如:
create table b(id number,value number);
create table a(id number,value number);
insert into b(1,100);
insert into b(1,200);
insert into b(2,300);
insert into a(1,100;)
然后执行下列语句报错ora-30926报错:
merge into a using b
on(a.id=b.id)
when matched then
update set a.value=a.value+b.value; --ora-30926报错:


如果为下列语句,则没问题:
merge into b using a on(a.id=b.id)............
三、merge中delete只能删除目标表。这个大家可以自己验证。
原创粉丝点击