我需要从表 A 中获取一些数据,使用一些逻辑,然后将一行或多行插入表 B。我有一个 PLSQL 块,它使用游标从表 A 中引入数据,执行所有需要的逻辑,然后插入所需的行。
问题是表 B 中有重复的行 - 这是野兽的本性。但我需要最终结果是一个没有重复的表 B。
它是 Oracle,所以临时表是错误的形式 - 实现此目的的最佳方法是什么?
我需要从表 A 中获取一些数据,使用一些逻辑,然后将一行或多行插入表 B。我有一个 PLSQL 块,它使用游标从表 A 中引入数据,执行所有需要的逻辑,然后插入所需的行。
问题是表 B 中有重复的行 - 这是野兽的本性。但我需要最终结果是一个没有重复的表 B。
它是 Oracle,所以临时表是错误的形式 - 实现此目的的最佳方法是什么?
如果表 A 中的插入内容引入了重复项,那么MERGE似乎是有序的。当表 B 中不存在记录时,A
MERGE
可以提供数据;如果记录已经存在,则可以提供数据,从而防止引入重复项。INSERT
UPDATE
FrustratedWithFormsDesign 是正确的,您可能应该有一个防止引入重复项的约束。他也正确地指出这段代码可能会受益于批量处理。
Phil 是正确的,如果您只需要插入数据,那么从插入中修剪行的子查询将更可取。