Oracle+mybaits Merge操作及Merge中 ORA-01461:仅能绑定要插入LONG列的LONG值问题解决

Merge操作:

作用:判断B表和A表是否满足ON中条件,如果满足则用B表去更新A表,如果不满足,则将B表数据插入A表

简单来说,就是 数据库中有原有记录则更新,没有的话则新插一条

Merge语法在不同的数据库中可能略有差别,但基本的语法结构都是:

MERGE INTO [表名] A 
USING [数据] B 
ON([判断相等的条件A] and [判断相等的条件B]...)
WHEN MATCHED THEN <!--若匹配上,则执行更新语句 -->
[更新语句]
WHEN NOT MATCHED THEN <!--若没有匹配上,则新插入该条数据 -->
[插入数据]

Oracle+mybatis的merge操作和mysql不太一样,主要是因为Oracle中INSERT语句 不支持以下写法的批量插入

insert into table

(id,name)

values

(1,'张三'),

(2,'李四')

这样的写法,批量insert需要写成 Union的方式,如下

insert into table(id, name)
select '24', '张三' from dual
union select '李四', 'jack' from dual
union select '王五', 'jack' from dual

因此,在Oracle中,标准的Merge+mybait

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值