如何删除所有由sql语句创建的表?

时间:2019-02-09 15:54:42

标签: sql oracle oracle-sqldeveloper

drop all tables;

drop all tables from database;

2 个答案:

答案 0 :(得分:0)

一种方法是使用元数据表生成所有DDL语句

select 'DROP TABLE '||table_name||';'
  from user_tables

运行查询并将输出复制并粘贴,其中将包含用于删除表的语句

答案 1 :(得分:0)

一种解决方案是使用DROP选项CASCADE来拥有对象的用户。

DROP USER myuser CASCADE;

这将有效地删除所有用户对象(表,视图,包,过程等)。然后,您将需要重新创建用户。


否则,如果您想将操作范围限制为仅删除所有表(以及相关的约束),则可以编写一个过程来动态生成并执行一系列DROP TABLE语句:

BEGIN
   FOR cur_rec IN (SELECT object_name FROM user_objects WHERE object_type = 'TABLE')
   LOOP
      BEGIN
         EXECUTE IMMEDIATE 'DROP TABLE "' || cur_rec.object_name || '" CASCADE CONSTRAINTS';
      EXCEPTION
         WHEN OTHERS THEN
            DBMS_OUTPUT.put_line ('FAILED: DROP TABLE "' || cur_rec.object_name || '"');
      END;
   END LOOP;
END;
/