当前位置: 代码迷 >> Oracle开发 >> oracle 中 merge into用法有关问题
  详细解决方案

oracle 中 merge into用法有关问题

热度:582   发布时间:2016-04-24 06:26:23.0
oracle 中 merge into用法问题
本帖最后由 ymymrydzh1 于 2015-06-24 15:05:57 编辑
表结构:fsreqord
标识符                        数据类型              主键
fs_procod                 varchar2(2)          PK
fs_opyear                 varchar2(4)          PK
fs_orderno               number(10)

想实现根据主键,若主键存在则fs_orderno增加1,若主键不存在则新增记录,fs_orderno为1。
语句如下:

merge into fsreqord 
                using (select '23' procod, '2015' opyear from dual) f 
                on(fsreqord.fs_procod = f.procod and fsreqord.fs_opyear = f.opyear) 
                when matched then 
                update set fs_orderno=fs_orderno+1; 
                when not matched then 
                insert (fs_procod,fs_opyear,fs_orderno) values (f.procod,f.opyear,1);

不加when not 前面的语句,测试通过,可以+1,但是加了when not这句就不行了,想问下错在哪里了。
------解决思路----------------------
merge into fsreqord 
                using (select '23' procod, '2015' opyear from dual) f 
                on(fsreqord.fs_procod = f.procod and fsreqord.fs_opyear = f.opyear) 
                when matched then 
                update set fs_orderno=fs_orderno+1;--是不是这边多了个分号
                when not matched then 
                insert (fs_procod,fs_opyear,fs_orderno) values (f.procod,f.opyear,1);
注意下提示错误在哪一行。
  相关解决方案