資料庫里有幾百個表,用存盤程序腳本清空表資料,做到有表就清除表資料,不洗掉表
uj5u.com熱心網友回復:
不需要用存盤程序,直接用user_tables視圖拼出洗掉腳本,比如:select 'truncate table '||table_name||';' from user_tables
執行上面查詢生成的腳本即可
因為你提到了“資料庫”,所以假設你要清除的不止一個用戶的表,所以你可能更需要查的是dba_tables,但這里有一個問題,需要注意你最好列出需要清除的用戶串列,比如:
select 'truncate table '||owner||'.'||table_name||';' from dba_tables where owner in (用戶串列);
uj5u.com熱心網友回復:
如果用存盤程序的目的是為了能用多次呼叫,那么就可以用在程序中用動態SQL去執行這些拼出來的truncate陳述句。uj5u.com熱心網友回復:
三連~友情提示:如果有例外情況,比如某些表不想洗掉,在使用資料字典user_tables或者dba_tables的時候,記得使用合適的過濾條件將他們派出。
uj5u.com熱心網友回復:
CREATE OR REPLACE PROCEDURE Prc_Clear_Data ISv_Sql VARCHAR2(500);
BEGIN
--游標,當前用戶查詢user_tables,所有用戶查詢all_tables
FOR Rec IN (SELECT Table_Name FROM User_Tables) LOOP
--拼裝sql
v_Sql := 'truncate table ' || Rec.Table_Name;
--立即執行
EXECUTE IMMEDIATE v_Sql;
END LOOP;
END Prc_Clear_Data;
uj5u.com熱心網友回復:
樓上的幾位,說的很詳細了。uj5u.com熱心網友回復:
保留表,清理資料,使用truncate 命令轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/38309.html
標籤:開發
上一篇:Unable to load odbcji32.dll
下一篇:oracle空值算大于當前日期嗎
