2013-08-03 79 views

回答

19

您可以编写一个脚本,特别是循环,在其中从user_tables中选择Table_name并迭代此循环,并使用“execute immediate”命令删除它们。

但我建议这一点 - 在SQL工具做

select 'drop table ' || table_name || ';' from user_tables where table_name like 'TBL_%' 

然后复制这个查询的输出并粘贴到你的SQL编辑器,并执行。请记住,如果sql +是你的编辑器,如果你粘贴它们,它们将开始执行。也许你想用记事本先查看和编辑它。

但是,您不能在一个命令中放置多个表。 检查此链接与DROP TABLE http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9003.htm

7
BEGIN 

    --Bye Tables! 
    FOR i IN (SELECT ut.table_name 
       FROM USER_TABLES ut) LOOP 
    EXECUTE IMMEDIATE 'drop table '|| i.table_name ||' CASCADE CONSTRAINTS '; 
    END LOOP; 

END; 
+0

相关的其他选项我在原来的答复> 3年前描述的这种技术。我指出,有时使用数据时可能会很危险http://stackoverflow.com/a/18030453/1704458 –

+0

由于用户*特别询问*仅以“TBL_”开头的表格,因此会得到低估,删除所有! – theMayer