提前道歉,我偶爾是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 - 我也注意到了,但是嘿 - 我該爭辯誰? :-) –