<insertid="updateItemvalue"parameterType="java.util.List">
MERGE INTO T_INS_IQC_ITEMVALUE t
USING(
<foreachcollection="list"item="item"index="index"separator="union">
SELECT
#{item.inspectionNo} AS INSPECTION_NO,
#{item.orderNo} AS ORDER_NO,
#{item.itemNo} AS ITEM_NO,
#{item.serialNo} AS SERIAL_NO,
#{item.itemValue} AS ITEM_VALUE
FROM
dual
</foreach>
)p
ON
(t.INSPECTION_NO = p.INSPECTION_NO
AND t.ORDER_NO = p.ORDER_NO
AND t.SERIAL_NO = p.SERIAL_NO
AND t.ITEM_NO = p.ITEM_NO)
WHEN MATCHED THEN
UPDATE SET t.ITEM_VALUE = p.ITEM_VALUE
WHEN NOT MATCHED THEN
INSERT (INSPECTION_NO,
ORDER_NO,
ITEM_NO,
SERIAL_NO,
ITEM_VALUE)
VALUES
(p.INSPECTION_NO,p.ORDER_NO,p.ITEM_NO,p.SERIAL_NO,p.ITEM_VALUE)
</insert>
MERGEINTO
T_INS_IQC_ITEMVALUE t
USING(SELECT'IQC-20211015-00002'AS INSPECTION_NO,7AS ORDER_NO,'5'AS ITEM_NO,1AS SERIAL_NO,11AS ITEM_VALUE
FROM
dual
UNIONSELECT'IQC-20211015-00002'AS INSPECTION_NO,7AS ORDER_NO,'5'AS ITEM_NO,2AS SERIAL_NO,1111AS ITEM_VALUE
FROM
dual )p
ON(
t.INSPECTION_NO = p.INSPECTION_NO
AND t.ORDER_NO = p.ORDER_NO
AND t.SERIAL_NO = p.SERIAL_NO
AND t.ITEM_NO = p.ITEM_NO
)WHENMATCHEDTHENUPDATESET t.ITEM_VALUE = p.ITEM_VALUE
WHENNOTMATCHEDTHENINSERT(
INSPECTION_NO,
ORDER_NO,
ITEM_NO,
SERIAL_NO,
ITEM_VALUE)VALUES(p.INSPECTION_NO,
p.ORDER_NO,
p.ITEM_NO,
p.SERIAL_NO,
p.ITEM_VALUE);