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