ORACLE的数据新增与修改兼顾操作merge into

     如果你的需求满足:根据条件如果满足则对该条数据进行修改操作,如果不满足则进行新增操作。

sql形式如下:

MERGE INTO [target-table] A USING [source-table sql] B ON([conditional expression] and [...]...)
WHEN MATCHED THEN
	[UPDATE sql]
WHEN NOT MATCHED THEN
	[INSERT sql]

sql实例如下:

<insert id="insertTwesd00OrUpdate">

    MERGE INTO iplat_logistics.TWESD04 A
	       USING (SELECT #batchNo# batchNo,#warehouseNo# warehouseNo FROM DUAL) B
		   ON  (A.BATCH_NO=B.batchNo AND A.WAREHOUSE_NO=B.warehouseNo)
	WHEN MATCHED THEN
			  UPDATE SET
			            STORAGE_NO = STORAGE_NO + #storageNo#,
						AVAILABLE_NO = AVAILABLE_NO + #storageNo#,
						SURPLUS_NO = SURPLUS_NO + #storageNo#
			  WHEN NOT MATCHED THEN
			            INSERT(
			                BATCH_NO,
			                WAREHOUSE_NO,
			                STOCK_ROOM_NO,
			                STORAGE_NO,
			                AVAILABLE_NO,
			                SURPLUS_NO
			            )VALUES(
			                
                  #batchNo#,#warehouseNo#,#stockRoomNo#,#storageNo#,#storageNo#,#storageNo#
			            )
</insert>
merge into A_MERGE A USING (select B.AID,B.NAME,B.YEAR from B_MERGE B) C ON(A.ID=C.AID)
WHEN NOT MATCHED THEN
	insert(A.ID,A.NAME,A.YEAR) VALUES(C.AID,C.NAME,C.YEAR);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值