关闭

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

1203人阅读 评论(0) 收藏 举报
分类:

今天突然发现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)

问题就解决了。

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:123315次
    • 积分:1719
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:72篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论