merge into 当using后的select结果为空时,不能执行update和insert

原创 2015年11月18日 09:56:41

今天突然发现merge into功能不起作用了,在网上找了半天,发现是merge into的一个固有bug。

无效语句如下:

merge into T_WORK_DRZJ a using (select * from T_WORK_DRZJ b where b.ygbh=22209 and b.rq=20151117)  on (a.ygbh = 22209 and a.rq=20151117) 
when matched then update set a.zjnr='1111111',a.gzqk='今日录入潜在客户1人。',a.shzt=0,a.sfgk=1,a.lsh=seq_work_drzj.nextval  
when not matched then insert values(20151117,22209,'1111111','今日录入潜在客户2人。','','','',0,'','','',1,seq_work_drzj.nextval)

因为

select * from T_WORK_DRZJ b where b.ygbh=22209 and b.rq=20151117
结果是空的,所以不能执行后面的update和insert语句。 经过改进后:

merge into T_WORK_DRZJ a using (select '22209' as ygbh, '20151116' as rq from dual) b  on (a.ygbh = b.ygbh and a.rq=b.rq) 
when matched then update set a.zjnr='1111111',a.gzqk='今日录入潜在客户1人。',a.shzt=0,a.sfgk=1,a.lsh=seq_work_drzj.nextval  
when not matched then insert values(20151116,22209,'1111111','今日录入潜在客户1人。','','','',0,'','','',1,seq_work_drzj.nextval)

问题就解决了。
版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle SQL:insert into语句总结 与 merge into用法总结

insert into语句总结 vs merge into用法总结:1、insert into 插入数据;2、merge into 有则更新,无则插入;...

Merge Into 语句代替Insert/Update

动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作。 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存...
  • xwnxwn
  • xwnxwn
  • 2016年08月08日 21:13
  • 1708

Merge into使用详解-你Merge了没有

 Merge into的使用详解-你Merge了没有 url: http://blog.csdn.net/inthirties/article/details/4731930 2009...
  • jackpk
  • jackpk
  • 2015年12月17日 08:22
  • 25432

oracle 通过查询灵活插入数据 insert into ...select..

insert into reg_user (id,name,password,area_code,reg_time,first_pswd,record_type) select l.reg...

oracle MERGE INTO...USING两表关联操作(效率高)

数据量小的时候可以使用子查询做两表关联操作;但数据量大的时候子查询效率太低(因为是单条比对) 比如: update person1 p1 set p1.p_name=(select p_name ...

Merge Into 语句代替Insert/Update在Oracle中的应用实战

动机:想在Oracle中用一条SQL语句直接进行Insert/Update的操作。说明:在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就...
  • yuzhic
  • yuzhic
  • 2007年11月21日 19:01
  • 29223

oracle中merge into用法解析

merge into的形式: MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] a...

merge into的妙用

今天遇到一个奇葩的需求:系统A是主系统,终端PDA会上传数据到系统A。当有单据id在系统A的id能查到,则update状态;当单据id在系统A中查不到则insert。下面来做一个简单的测试。 drop...

Oracle使用Merge into 注意事项

--一条数据时,通过构造dual来进行判断 MERGE INTO sc_wlhz T1 USING (SELECT 'gjsAAAAAsx43xn37' AS fsupplierid,'JAH0...
  • soonfly
  • soonfly
  • 2016年12月21日 08:45
  • 1811

怎么查看oracle数据库数据量大小?

1、查看所有表空间及表空间大小:   select tablespace_name ,sum(bytes) / 1024 / 1024 as MB from dba_data_files group...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:merge into 当using后的select结果为空时,不能执行update和insert
举报原因:
原因补充:

(最多只允许输入30个字)