Plsql Pl/sqldbms输出

Plsql Pl/sqldbms输出,plsql,oracle11g,dbms-output,Plsql,Oracle11g,Dbms Output,我对pl/sql非常陌生,无法运行此查询。 我希望它找出两个表之间的差异,然后输出这些事务的ID。 任何帮助都将不胜感激 SET SERVEROUTPUT ON DECLARE diff_id varchar2(50); diff_id2 varchar2(50); BEGIN FOR dcount IN SELECT O.transid , ABB.transid into diff_id, diff_id2 FROM (SELECT * FROM O.transactio

我对pl/sql非常陌生,无法运行此查询。
我希望它找出两个表之间的差异,然后输出这些事务的ID。
任何帮助都将不胜感激

SET SERVEROUTPUT ON
DECLARE
diff_id varchar2(50);
diff_id2 varchar2(50);

BEGIN
FOR dcount IN
SELECT
  O.transid ,
  ABB.transid
into diff_id, diff_id2 
FROM
  (SELECT *
  FROM O.transactions
  AND abdate >= trunc(sysdate -3)
  ) O
FULL OUTER JOIN
  (SELECT *
  FROM ABB.transactions
  AND  abdate >= trunc(sysdate -3)
  ) ABB
ON O.transid = ABB.transid

LOOP
 DBMS_OUTPUT.put_line (employee_rec.diff_id);
 DBMS_OUTPUT.put_line (employee_rec.diff_id2);  
END LOOP;
END;
我想要的输出是不在这两个文件中的事务id 桌子。Ie 375和480

啊,是的,375和480。832怎么样

无论如何:您不需要PL/SQL来实现这一点。SET操作员有什么好处吗?例如,如果您想从第一个表中获取第二个表中不包含的ID,您可以使用

select id from first_table
minus
select id from second_table;
双向的

select 'in 1st, not in 2nd' what, id 
from (select id from first_table
      minus 
      select id from second_table)
union all
select 'in 2nd, not in 1st', id
from (select id from second_table
      minus
      select id from first_table);

如有必要,应用附加条件(例如ABDATE列)。

请添加两个表的一些示例数据以及您所谈论的差异类型。同时根据样本数据添加期望的结果。请参阅,每个表中有2列,Id和日期,我希望的输出是不在这两个表中的事务Id。Ie 375和480。阅读我提供的文章,特别是第2部分。提供与背景相关的数据?尝试?并且它不是一个查询。您的PL/SQL在查询周围缺少括号。另外,单独运行查询(从
SELECT
开始,直到
ABB.transid
)并检查结果。