首页 > 解决方案 > 在插入到 oracle 表之前比较差异

问题描述

您能否告诉我如何比较表和我的选择查询之间的差异并将这些结果插入单独的表中?我的计划是通过使用 select 语句创建一个基表(名称 RESULT)并用当前结果集填充它。然后第二天我想创建一个程序,它将相同的选择与 RESULT 表进行比较,并将差异插入另一个名为 DIFFERENCES 的表中。

有任何想法吗?

谢谢!

标签: oracleplsql

解决方案


您可以按如下方式创建RESULT_TABLEusing :CTAS

CREATE TABLE RESULT_TABLE
AS SELECT ... -- YOUR QUERY

然后,您可以使用以下过程计算您的查询和数据之间的差异RESULT_TABLE

CREATE OR REPLACE PROCEDURE FIND_DIFF
AS
BEGIN
  INSERT INTO DIFFERENCES
  --data present in the query but not in RESULT_TABLE
  (SELECT ... -- YOUR QUERY
  MINUS
  SELECT * FROM RESULT_TABLE)
  UNION
  --data present in the RESULT_TABLE but not in the query
  (SELECT * FROM RESULT_TABLE
  MINUS
  SELECT ... );-- YOUR QUERY
  
END;
/

我已经UNION以不同的顺序使用了它们之间的和差异,用于MINUS在表中插入已删除的数据DIFFERENCES。如果这不是要求,则UNION根据您的要求在之后/之前删除查询。


推荐阅读