|
|
本帖最后由 newkid 于 2025-10-19 03:12 编辑
你没有理解我的问题。我的意思是,你“并不需要”知道哪些插入成功了,也即,那些RETURNING的ROWID对你无用。只要把需求说明白,很可能有其他方法实现。
你说的那个"REPLACE INTO",其实就是"MERGE INTO", 在同一个语句实现INSERT和UPDATE,而且它支持批量绑定。
用你前面数据做例子:
MERGE INTO EMASS_TRANS.T_TXN_REPEAT_DDT
USING DUAL
ON (card_serial_number=:1 AND txn_date_time=TO_DATE(:2,'YYYY-MM-DD HH24:MI:SS') AND device_id=:3 AND udsn=:4 AND line_number=:5 AND ud_subtype=:6 AND ud_type=:7)
WHEN NOT MATCHED THEN INSERT ( ----根据需要添加
card_serial_number,txn_date_time,device_id,udsn,line_number,ud_subtype,ud_type
)
VALUES (:1,:2,:3,:4,:5,:6,:7)
WHEN MATCHED THEN UPDATE SET settlement_date=settlement_date ----- 根据需要改写这部分
;
其中的USING DUAL看起来有点奇怪,这是因为你所有的数据都来自于绑定变量,而不是某一张源数据表,所以你只需要DUAL来构造一个一行数据集。
|
|