0
我試圖找到在Oracle 11g中是否有方法,我可以將結果列表從SELECT存儲到變量(對象)中,然後通過該列表循環執行第二個查詢結果?來自查詢的Oracle 11g臨時列表對象
基本上我正在嘗試做的是獲取列名的所有表的清單,然後從它們的表中刪除某些數據。
喜歡的東西:提前
var PRODUCTID_TABLE = SELECT table_name
FROM user_tab_columns
WHERE column_name = 'PRODUCT_ID'
AND table_name NOT LIKE 'BIN%';
FOR T IN PRODUCTID_TABLE LOOP
DELETE FROM T.TABLE_NAME WHERE PRODUCT_ID = {value};
END LOOP;
COMMIT;
感謝
KS
我喜歡選項一。是否有辦法立即運行那些生成的DELETE語句,反對複製它們並手動運行它們? – Casper
除非您編寫一個將使用EXECUTE IMMEDIATE運行查詢的存儲函數,否則不要認爲這是可能的。然後你可以在第一個查詢中運行它,如:SELECT run_dynamic_delete(table_name) FROM user_tab_columns WHERE column_name ='PRODUCT_ID' AND table_name NOT LIKE'BIN%';' –
乾杯,我把它變成了兩步工作到底。運行此腳本以構建DELETE腳本,然後將它們複製到.sql中並通過sqlplus運行 – Casper