需求:
    做为开发人员,经常需要导入导出数据库,但是导入前需要删除原有用户的所有对象,如:表,索引,函数等,
    我现在的做法是用pl/sql一个一个的选择,然后再删,这样做起来非常的麻烦,
    弄个了sql语句,从user_objects中删,但是一直报错,现求一段代码能删除指定用户下的所有对象,sql语句也行,
     过程也行给分原则:有好的答案,一直给分,多多益善

解决方案 »

  1.   

    不明白lz为什么不用drop user username cascade.
      

  2.   

    对数据字典执行查询,生成删除语句

    select 'drop table '||tname ||';' from tab;把生成的结果拿去执行就是了,上面产生的是删除表的语句或是做个过程用上面的查询语句产生一个游标,用dbms_sql逐条执行他
      

  3.   

    写个过程:
    create or replace procedure droptables 
    as
    begin
      for rectbl in (select table_name from user_tables) 
      loop
        execute immediate 'drop table ' || rectbl.table_name;
      end loop;
    end;
    如果有外键的话,删表之前要先把外键disable
      

  4.   

    我一般是用TOAD来删除了的,可以一下选中所有表删除
      

  5.   

    如果用户下的所有东西都要删掉的话,我觉的还不如先drop user再create user然后再执行导入操作
      

  6.   

    能把建用户的sql倒出来就最好了
      

  7.   

    楼主同志,你要有好的办法麻烦通知我哈,我还不知道有这好办法呢,目前知道最简洁的办法是一楼的,大不了重建用户,下边的几位只能删表,对于视图,索引,主外键关系,函数和过程都要另写sql,太费事了