表结构: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);
注意下提示错误在哪一行。