oracle:
drop user user_name cascade;

解决方案 »

  1.   

    弱水兄:
    drop掉用戶啟不是什麼都沒了.
    而貼主只想drop掉所有用戶表啊.
      

  2.   

    对我只想drop掉一个用户下的所有表。
      

  3.   

    可惜呀.
    如果你是SQL Server,
    那麼有一種很好的方法
    能讓你drop掉所有的用戶表
    並且保留其他的數據庫object方法如下(在Query Analyzer中執行):
    declare @table_name varchar(8000)
    declare @drop_table varchar(8000)
    set @table_name = ' '
    select name into #temp_1 from sysobjects where xtype = 'U'
    update #temp_1 set @table_name=@table_name+','+name from #temp_1
    set @table_name = substring(@table_name,3,len(@table_name))
    set @drop_table = 'drop table '+@table_name
    exec (@drop_table)
      

  4.   

    先DROP掉再重建USER,这样比较方便
    否则的话要用从USER_TABLES里拿出所有的表名,再一段循环来做,太麻烦
      

  5.   

    有一种手工的办法,我有时候会用. 在SQL*PLUS下运行:
    SQL> SET PAGES 999
    SQL> SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE;';
    然后会返回一串查询结果,是字符串,象这样的:
    DROP TABLE MYTABLE1 CASCADE;
    DROP TABLE MYTABLE2 CASCADE;
    ....
    把这些结果COPY,然后直接在SQL*PLUS里PASTE, 就能把当前用户所有的表DROP掉了.
      

  6.   

    有问题,应该是
    SQL> SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE;'
         FROM USER_TABLES;
      

  7.   

    我该写:
    sql>set pages 999;
    sql>SELECT 'DROP TABLE ' bp ' CASCADE;'
        FROM bp;
    这样对吗?
      

  8.   

    不是.
    還是:
    SQL> SET PAGES 999
    SQL> SELECT 'DROP TABLE ' ¦¦ TABLE_NAME ¦¦ ' CASCADE;'
        FROM USER_TABLES;然後將運行出來的結果
    copy出來運行一遍.
      

  9.   

    三千兄:
        运行后它叫我输入 BRVBAR的值,我该输什么啊?
      

  10.   

    csdn怎麼回事,會把||變成¦¦SQL> SET PAGES 999
    SQL> SELECT 'DROP TABLE '||TABLE_NAME||' CASCADE;' from user_tables;
      

  11.   

    得出结果后动作系统说:
    ERROR 位于第1行:
    ORA-00950: 无效DROP选项
    或者是:
    ERROR 位于第1行:
    ORA-00972:标识过长
      

  12.   

    TO 小草:
    第一次上传||,CSDN会变成中文的制表符(大概),然后直接从屏幕上COPY下来再上传一次,就变成了¦¦,所以每次要修改一下. 不知道为什么.
    TO jackyliu(自由):
    你把第一次返回的结果贴几行出来看看
      

  13.   

    DROP TABLEDCOMPANYINFO CASCADE;
    DROP TABLEDDEVICETYPE CASCADE;
    DROP TABLEDERRORMSG CASCADE;
    DROP TABLEDICONS CASCADE;
    DROP TABLEDLOOKUPITEMS CASCADE;
    DROP TABLEDMAPLAYERS CASCADE;
    DROP TABLEDOCTANTMENU CASCADE;
    DROP TABLEDVEHICLETYPE CASCADE;
    DROP TABLEDYAXUNMENU CASCADE;
    DROP TABLEHBUSINESSINFORMATION CASCADE;
    DROP TABLEHCLIENTAPPEAL CASCADE;
    DROP TABLEHDISPATCHVEHICLE CASCADE;
    DROP TABLEHDRIVER CASCADE;
    DROP TABLEHDRIVERLOGIN CASCADE;
    DROP TABLEHMESSAGERECEIVED CASCADE;
    DROP TABLEHMESSAGESENT CASCADE;执行后返回的结果就是这样.
      

  14.   

    SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE;' FROM USER_TABLES;在DROP TABLE后面有一个空格,返回的应该是:
    DROP TABLE DCOMPANYINFO CASCADE;
    DROP TABLE DDEVICETYPE CASCADE;
    DROP TABLE DERRORMSG CASCADE;
    ......
      

  15.   

    三千兄:
        DROP TABLE DCOMPANYINFO CASCADE;
                                      *
        ERROR 位于第1行:
        ORA-00905: 缺少关键字
    ......
      

  16.   

    是我的问题,oracle7和8的语法大概有点不一样,在CASCADE后面加上CONSTRAINTS就可以了。
    SELECT 'DROP TABLE ' || TABLE_NAME || ' CASCADE CONSTRAINTS;' FROM USER_TABLES;
    加CASCADE CONSTRAINTS的意思是删除连带的外键。如果你不需要的话,就直接用:
    SELECT 'DROP TABLE ' || TABLE_NAME || ';' drop table这类是最基本的sql语法,到处可以查得到的
      

  17.   

    谢谢三千兄:
       我后来也试过了加 CONSTRAINTS 但又拿不准所以多问了一句.再次感谢!
      

  18.   

    要是有DELETE ALL TABLES FROM USERNAME就好了
      

  19.   

    Control我对你的敬仰犹如滔滔江水连绵不决呀!!高,实在是高!!!
      

  20.   

    请关注一下:http://www.csdn.net/expert/topic/345/345130.shtm一个关于记录打印机打印信息的技术问题,这对我非常难,你能帮我解决吗?