如何删除所有用户表?

我怎样才能删除所有的用户表?

我有约束的问题。 当我禁用所有它仍然是不可能的。

BEGIN FOR cur_rec IN (SELECT object_name, object_type FROM user_objects WHERE object_type IN ('TABLE', 'VIEW', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'SEQUENCE', 'SYNONYM', 'PACKAGE BODY' )) LOOP BEGIN IF cur_rec.object_type = 'TABLE' THEN EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '" CASCADE CONSTRAINTS'; ELSE EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"'; END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ( 'FAILED: DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"' ); END; END LOOP; END; / 

如果你只是想要一个非常简单的方法来做到这一点..这是我过去使用的脚本

 select 'drop table '||table_name||' cascade constraints;' from user_tables; 

这将为模式中的所有表格输出一系列放置命令。 假脱机查询的结果并执行它。

来源: https : //forums.oracle.com/forums/thread.jspa?threadID=614090

同样,如果您想清除多个表格,您可以编辑以下内容以满足您的需求

 select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX') 

另一个回答对我来说是( http://snipt.net/Fotinakis/drop-all-tables-and-constraints-within-an-oracle-schema/

 BEGIN FOR c IN (SELECT table_name FROM user_tables) LOOP EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS'); END LOOP; FOR s IN (SELECT sequence_name FROM user_sequences) LOOP EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name); END LOOP; END; 

请注意,运行后立即生效 。 它不会产生一个你需要粘贴的脚本(就像这里的其他答案一样)。 它直接在数据库上运行。

 begin for i in (select 'drop table '||table_name||' cascade constraints' tbl from user_tables) loop execute immediate i.tbl; end loop; end; 

最简单的方法是使用cascade命令删除拥有对象的用户。

 DROP USER username CASCADE 

最简单的方法是删除表空间,然后build立表空间备份。 但我宁愿不必这样做。 这和Henry的类似,不过我只是在我的gui中对结果集进行复制/粘贴。

 SELECT 'DROP' ,object_type ,object_name ,CASE(object_type) WHEN 'TABLE' THEN 'CASCADE CONSTRAINTS;' ELSE ';' END FROM user_objects WHERE object_type IN ('TABLE','VIEW','PACKAGE','PROCEDURE','FUNCTION','SEQUENCE')