我在截断一些在我的基础中生成的表时遇到了一些麻烦。 表名保存,我可以手动完成,但我想看看它是否可以自动修复。
到目前为止,我所做的是将所有表名和id /号放入我自己的帮助表中。我的错误开始于循环/执行立即我不知道如何使用我在语法中得到的数据,我无法找到任何类似的例子。
create table HlpTruncTable as SELECT SUBSTR(argument, 3) as tblName, rownum as Nr
FROM tblLogHlp
WHERE status = 'E' and argument like '0,awfh%' and LAST_UPDATE <= ADD_MONTHS(sysdate,-1);
for i in 1..(select max(nr) from HlpTruncTable) LOOP
execute immediate TRUNCATE TABLE (select tblName from HlpTruncTable where nr = (i));
END LOOP;
drop table hlpTruncTable;
答案 0 :(得分:4)
我会这样做:
declare
cursor HlpTruncTable is
SELECT SUBSTR(argument, 3) as tblName
FROM tblLogHlp
WHERE status = 'E' and argument like '0,awfh%' and LAST_UPDATE <= ADD_MONTHS(sysdate,-1);
BEGIN
FOR aTable IN HlpTruncTable LOOP
execute immediate 'TRUNCATE TABLE '||aTable.tblName;
END LOOP;
END;