sql存储过程删除用户下所有对象语句

 代码如下 复制代码

create or replace procedure drop_all as  cursor cur_obj is
    select uo.OBJECT_NAME, uo.OBJECT_TYPE
      from user_objects uo
     where uo.OBJECT_NAME not in ('DROP_ALL')
       and uo.OBJECT_TYPE not in ('LOB');

/*  cursor cur_tablespace is
    select ut.TABLESPACE_NAME
      from user_tablespaces ut
     where ut.TABLESPACE_NAME not in
           ('SYSTEM', 'SYSAUX', 'UNDOTBS1', 'TEMP', 'USERS');*/

  v_obj_name         user_objects.OBJECT_NAME%type;
  v_obj_type         user_objects.OBJECT_TYPE%type;
/*  v_tablespaces_name user_tablespaces.TABLESPACE_NAME%type;*/
  sql_str1           varchar2(2000);
/*  sql_str2           varchar2(2000);*/
begin
  open cur_obj;
  loop
    fetch cur_obj
      into v_obj_name, v_obj_type;
    exit when cur_obj%notfound;
    sql_str1 := 'drop ' || v_obj_type || ' ' || v_obj_name;
    execute immediate sql_str1;
  end loop;
  close cur_obj;
/*  open cur_tablespace;
  loop
    fetch cur_tablespace
      into v_tablespaces_name;
    exit when cur_tablespace%notfound;
    sql_str2 := 'drop tablespace ' || v_tablespaces_name ||
                ' including contents';
    execute immediate sql_str2;
  end loop;
  close cur_tablespace;*/
end drop_all;

  这个存储过程可以一把删掉用户下几乎所有的对象。注释里的东西释放出来就能删除表空间了。这个过程不能回滚,绝对不要在生产环境或者有用的环境上使用。我不对这个过程执行的结果负任何责任

时间: 2024-11-03 21:44:14

sql存储过程删除用户下所有对象语句的相关文章

动态sql语句来删除用户下的对象

写动态sql,下面是删表的例子 一: spool droptable.sql select 'drop table '||table_name||';' from user_tables; spool off start droptable.sql 二: create or replace procedure pro_droptable is cursor cur is select table_name from user_tables; drop_sql varchar2(1000); be

impdp在同一个数据库中将一个用户下的对象复制到另一个用户下

比如要将ybht_hs用户下的对象复制到另一个用户ybht_ty下 那么在ybht_hs用户下创建一个public database link create public database link tolink connect to ybht_hs identified by "hs" using '(DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST =10.138.129.4)(PORT

oracle 删除用户下对象 脚本生成

select 'drop table ' || table_name ||';'||chr(13)||chr(10) from user_tables; --delete tables select 'drop view ' || view_name||';'||chr(13)||chr(10) from user_views; --delete views select 'drop sequence ' || sequence_name||';'||chr(13)||chr(10) from

如何把hr用户下所有对象导入Oracle

首先创建aa用户: sys@ORCL> create user aa identified by aa; User created. 用hr用户登录查看用户权限: sys@ORCL> conn hr/hr Connected. hr@ORCL> select * from session_privs; PRIVILEGE ---------------------------------------- CREATE SESSION ALTER SESSION UNLIMITED TABL

SQL Server2005删除数据库用户

在SQL Server2000中删除数据库用户很简单,只要直接删除或者使用Drop User命令就可以了,但是SQL Server2005中直接操作是不行的,这是因为在SQL Server 2005中架构是做为实体对待的.所以要删除该用户,需要先删除该用户所拥有的架构或更改此架构的所有者.否则会提示"数据库主体在该数据库中拥有架构,无法删除.    搜索了一下知道每一个数据库用户对应于一个系统登陆帐号,并且每一个架构只能赋予一个用户.所以直接删除用户的架构是不可以的,然后我就新建一个登录名,并且

SQL2000/Sql2005中无法删除用户怎么办

  SQL Server删除用户的步骤 1.sql server MANAGEMENT STUDIO-->数据库-->安全性-->构架,先删除对应的构架 2.sql server MANAGEMENT STUDIO-->数据库-->安全性-->用户,删除对应的用户先删除此用户对应的架构,然后再删除对应的用户. 上面的方法我无法删除用户 SQL Server 2000 无法删除用户的解决方法 . 今天在转移数据的时候就遇到这个问题了,解决方法如下: 把sql数据库从一个服

SQL2000/Sql2005中无法删除用户解决办法

SQL Server删除用户的步骤 1.sql server MANAGEMENT STUDIO-->数据库-->安全性-->构架,先删除对应的构架 2.sql server MANAGEMENT STUDIO-->数据库-->安全性-->用户,删除对应的用户先删除此用户对应的架构,然后再删除对应的用户. 上面的方法我无法删除用户 SQL Server 2000 无法删除用户的解决方法 . 今天在转移数据的时候就遇到这个问题了,解决方法如下: 把sql数据库从一个服务器

oracle中如何删除用户

删除用户,可以使用drop user命令,如下所示: drop user user01; 如果用户拥有对象,则不能直接删除,否则将返回一个错误值.指定关键字cascade,可删除用户所有的对象,然后再删除用户.下面的例子用来删除用户与其对象: drop user user01 cascade; 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

android-oracle同一数据库中怎样将一个用户下的表导入或复制到另一个 用户中

问题描述 oracle同一数据库中怎样将一个用户下的表导入或复制到另一个 用户中 ** oracle同一数据库中怎样将一个用户下的表导入或复制到另一个 用户中** 解决方案 oracle把一个用户的表数据复制到另一个用户oracle把一个用户下数据库对象的某个权限赋给另一个用户Oracle当前数据库用户访问另一个用户的表 解决方案二: exp owner=a imp fromuser=a touser=b 解决方案三: exp file=路径 full=y owner=用户1 imp fromu