不需要用存储过程,直接用user_tables视图拼出删除脚本,比如: select 'truncate table '||table_name||';' from user_tables 执行上面查询生成的脚本即可 因为你提到了“数据库”,所以假设你要清除的不止一个用户的表,所以你可能更需要查的是dba_tables,但这里有一个问题,需要注意你最好列出需要清除的用户列表,比如: select 'truncate table '||owner||'.'||table_name||';' from dba_tables where owner in (用户列表);
CREATE OR REPLACE PROCEDURE Prc_Clear_Data IS v_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;
select 'truncate table '||table_name||';' from user_tables
执行上面查询生成的脚本即可
因为你提到了“数据库”,所以假设你要清除的不止一个用户的表,所以你可能更需要查的是dba_tables,但这里有一个问题,需要注意你最好列出需要清除的用户列表,比如:
select 'truncate table '||owner||'.'||table_name||';' from dba_tables where owner in (用户列表);
友情提示:如果有例外情况,比如某些表不想删除,在使用数据字典user_tables或者dba_tables的时候,记得使用合适的过滤条件将他们派出。
v_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;