如何删除oracle数据库中所有表里的数据?
表的数量较多。一个一个删除是不现实的。

解决方案 »

  1.   

    编一个过程,试试:
    SQL> create or replace procedure truncate_all_table
      2  as
      3  l_str     varchar2(1000);
      4  begin
      5  for x in (select tname from tab where tabtype='TABLE') loop
      6  l_str:='truncate table '||x.tname;
      7  execute immediate l_str;
      8  end loop;
      9  end;
     10  /过程已创建。
    execute truncate_all_table;
      

  2.   

    spool c:\aa.txt
    set pagesize 1000
    select 'truncate table '||tname||';' from tab where tabtype = 'TABLE';
    spool off
    @c:\aa.txt
      

  3.   

    可以在程序中把用户表搜索出来,然后drop吗?表信息里有这一项的,可以用来判断到底是用户表还是系统表的。
      

  4.   

    用truncate的前提是表没有被其他表的外键约束引用。如果存在,必须先将从表的外键约束禁止掉再truncate主表。