oracle批量新增数据,如果有指定字段相同的数据,则更新

<insert id="batchAddStorage">
        MERGE INTO COMPUTER_GOODS_STORAGE t1
        USING (
        <foreach collection="list" item="item" index="index" separator="union" >
            select
            #{item.id} id,
            #{item.selfNo} selfNo,
            #{item.commodityName} commodityName,
            #{item.goodsName} goodsName,
            #{item.modelSpec} modelSpec,
            #{item.mainConfiguration} mainConfiguration,
            #{item.unit} unit,
            #{item.num} num,
            #{item.baseNum} baseNum,
            #{item.purchaseTotalPrice} purchaseTotalPrice
            from dual
        </foreach>) t2
        ON (
        t1.SELF_NO =  t2.selfNo
        )
        WHEN MATCHED THEN
        UPDATE SET t1.NUM = t2.num+t1.NUM,t1.PURCHASE_TOTAL_PRICE = t2.purchaseTotalPrice+t1.PURCHASE_TOTAL_PRICE,
        t1.UNIT = t2.unit,t1.MAIN_CONFIGURATION = t2.mainConfiguration,t1.COMMODITY_NAME = t2.commodityName
        WHEN NOT MATCHED THEN

INSERT
        (ID,SELF_NO, COMMODITY_NAME, GOODS_NAME, MODEL_SPEC, MAIN_CONFIGURATION, UNIT,NUM,BASE_NUM,PURCHASE_TOTAL_PRICE)
        VALUES
        (t2.id,t2.selfNo, t2.commodityName, t2.goodsName, t2.modelSpec, t2.mainConfiguration, t2.unit,t2.num,t2.baseNum,t2.purchaseTotalPrice)
    </insert>


 说明:如果传入的字段值 t2.selfNo 的值在表中已存在相同的值(t1.SELF_NO =  t2.selfNo),则批量更新指定字段(UPDATE SET t1.NUM = t2.num+t1.NUM,t1.PURCHASE_TOTAL_PRICE = t2.purchaseTotalPrice+t1.PURCHASE_TOTAL_PRICE,
        t1.UNIT = t2.unit,t1.MAIN_CONFIGURATION = t2.mainConfiguration,t1.COMMODITY_NAME = t2.commodityName)否则则批量插入数据(INSERT
        (ID,SELF_NO, COMMODITY_NAME, GOODS_NAME, MODEL_SPEC, MAIN_CONFIGURATION, UNIT,NUM,BASE_NUM,PURCHASE_TOTAL_PRICE)
        VALUES
        (t2.id,t2.selfNo, t2.commodityName, t2.goodsName, t2.modelSpec, t2.mainConfiguration, t2.unit,t2.num,t2.baseNum,t2.purchaseTotalPrice))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值