我有一个源表和一个目标表。我需要在最终表中进行更新并插入以下条件:
1)当SourceTable.ProductName = TargetTable.ProductName和SourceTable.Amount = TargetTable.Amount然后 更新TargetTable设置TargetTable.ValidFrom = sysdate 另外我需要像这样插入, 插入TargetTable(ProductName,Amount,ValidFrom,Version)值(TargetTable.ProductName,TargetTable.Amount,sysdate,TargetTable.Version + 1) 这是为了维护版本。
2)当没有匹配时,我需要像这样直接插入, 插入TargetTable(ProductName,Amount,ValidFrom,Version)值(SourceTable.ProductName,SourceTable.Amount,sysdate,1)
截至目前,我正在考虑在Cursor中捕获这些匹配记录,并在游标循环中一起执行Update和Insert。但我愿意避免循环,我有大约1000万条匹配记录。
我们也有Merge声明,但我相信Merge不支持更新和插入单个" WHEN MATCHED"条款。如果我错了,请纠正我?
请建议实现此行为的最佳方法。