簡體   English   中英

在Oracle中循環執行動態查詢

[英]looping and executing dynamic query in Oracle

我在截斷在我的基礎中生成的某些表時遇到了一些麻煩。 表名已保存,我可以手動進行,但是我想看看它是否可以自動修復。

到目前為止,我所做的就是將所有表名和一個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;

我會這樣做:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM