提前道歉,我偶尔是Oracle用户。我将各种函数/过程使用的查找表放在一起,并且需要使用需要删除或插入的行每天保持一次刷新。我将以下简单的查询放在一起,返回可以确定所需操作的列。一旦我返回了我的删除数据,然后我需要从表A中删除site_id和zone_ids匹配的所有记录。我无法找出实现这一目标的最佳方式,我曾考虑将select语句作为游标运行,但我不确定如何使用返回的每条记录中的site_id和zone_id从表A中删除行。Oracle - 通过光标删除或插入行
查询,返回记录从表-A被删除
SELECT site_id,zone_id,upper(ebts_switch_name)
FROM Table_A
minus
(SELECT site_id,zone_id, upper(ebts_switch_name)
FROM [email protected]_db
UNION
SELECT site_id,zone_id,upper(ebts_switch_name)
FROM Table_C);
查询,返回记录插入到表-A
SELECT cluster_id, site_id,zone_id, upper(trigram),upper(ebts_switch_name)
FROM [email protected]_db
WHERE site_id is NOT NULL
minus
SELECT cluster_name,site_id,zone_id,upper(trigram),upper(ebts_switch_name)
FROM Table_A
小错字:应该是'Table_A MINUS(Table_B UNION Table_C)'不是'Table_A MINUS(Table_B UNION Table_A)'(它不会删除任何东西)。编辑:只是注意到,这是最初的OP的错误。 – MT0
感谢您的更新鲍勃,这符合我的需求我想我是在我的脑海里工作。我将添加到由Perl脚本调用的过程中,并使用dbms输出来抓取和记录更新的行。 – MatteoS
@ MT0 - 我也注意到了,但是嘿 - 我该争辩谁? :-) –