批量更新数据Oracle

              最近做项目遇到一个问题,前台页面修改购物订单,订单包含几百条商品,前台修改商品的数量,列表信息提交给后台。

      订单表Order(OrderNo,GoodsCode,GoodsName,Unit,Remark,Quantity,.........);

      前台修改Quantity的值,返回List<OrderVo>,OrderVo对象包含三个属性OrderNo,GoodsCode,Quantity,存新的Quantity值。

      传统的方法,根据商品编号一条一条update的Order表中的Quantity值,update几百次,显然效率很低。

      现在考虑建一张临时表OrderTemp(OrderNo,GoodsCode,Quantity),批量插入List<OrderVo>的对象内容

INSERT INTO OrderTemp
   (OrderNo,GoodsCode,Quantity)
   
   
   
    
    
   (SELECT #{item.orderNo,jdbcType=VARCHAR},#{item.GoodsCode,jdbcType=VARCHAR},#{item.Quantity,jdbcType=REAL} FROM DUAL)
   
   
   
      然后用临时表给订单表赋值

update Order d 
		SET d.Quantity =(select t.Quantity from OrderTemp t where t.OrderNo = d.OrderNo )   
		where exists(select 1 from OrderTemp t	where t.OrderNo = d.OrderNo )
		
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值