首页 > 解决方案 > 在 2 个表之间进行比较并插入缺失的记录 pl sql

问题描述

我们有一个 pl sql 过程,在其中我们获取具有多条记录的 xml 数据,首先存储在临时表中,通过验证或在循环中对接收到的 xml 进行一些检查后,我们将插入另一个表,即最终表,一些由于某种原因,很少有记录没有被推送到最终表中,现在在循环结束时的相同 plsql 代码中,我们需要重新检查临时表中的所有行,比如表 A 是否被插入到另一个表 B 中。例如:表 A 中包含列的员工记录

<Employee>
Empid, empname, empdesg, empaddr,empemail, empMobNo
</Employee>

表 B 中包含列的员工记录

<Employee>
EmpNo, empFirstName, EmpLevel, empAddress, empContactDetails, empPhNum
</Employee>

现在我们有 30 条员工记录从源到 plsql 存储在表 A 中,但由于某些原因只有 27 条插入到表 B 中,需要比较表 B 中丢失的记录,然后将它们从表 A 重新插入表 B关于empid/empNo。

请建议如何做到这一点。

标签: sqloraclejoinplsql

解决方案


这就是想法:

   INSERT INTO B
    SELECT * FROM A WHERE empid IN
    (
    SELECT empid FROM A
    MINUS
    SELECT empNo FROM B
    );

推荐阅读