JAVA代码oracle删除用户,Oracle: 删除当前用户的所有对象(表、视图、存储过程、包、javasource,job)...

Oracle: 删除当前用户的所有对象(表、视图、存储过程、包、javasource,job)

by yanleigis email:landgis@126.com

说明:该函数在oracle10g专用,使用前要备份数据,数据删除后,数据不能恢复,一定要小心,小心,小心谨慎。

create or replace package pack_deleteall is

procedure deleteall;

end pack_deleteall;

create or replace package body pack_deleteall is

procedure deletetable is

--删除表和视图oracle10g专用 by yanleigis email:landgis@126.com

cursor c1 is

select t.tabtype, t.tname from tab t;

sqlstr varchar2(1024);

begin

for rr in c1 LOOP

begin

sqlstr := 'drop  ' || rr.tabtype || ' ' || rr.tname;

if rr.tabtype = 'TABLE' then

sqlstr := sqlstr || ' purge';

end if;

execute immediate sqlstr;

exception

when others then

begin

sqlstr := 'drop  ' || rr.tabtype || ' ' || rr.tname ||

' cascade constraints';

execute immediate sqlstr;

exception

when others then

begin

sqlstr := 'drop  ' || rr.tabtype || ' "' || rr.tname ||

'" cascade constraints'; --加"

execute immediate sqlstr;

exception

when others then

dbms_output.put_line(sqlstr || sqlcode || ':' || sqlerrm);

end;

end;

end;

END LOOP;

end;

procedure deletesource is

--删除存储过程,包,java source等等oracle10g专用 by yanleigis email:landgis@126.com

cursor c1 is

select b.object_type, b.object_name

from user_objects b

where b.object_type != 'PACKAGE BODY'

and b.object_name != upper('pack_deleteall');

sqlstr varchar2(1024);

begin

for rr in c1 LOOP

begin

sqlstr := 'drop ' || rr.object_type || ' ' || rr.object_name;

execute immediate sqlstr;

exception

when others then

begin

sqlstr := 'drop ' || rr.object_type || ' "' || rr.object_name || '"'; --创建时加'"

execute immediate sqlstr;

exception

when others then

dbms_output.put_line(sqlstr || sqlcode || ':' || sqlerrm);

end;

end;

end loop;

end;

procedure deletejob is

---删除存jjob oracle10g专用 by yanleigis email:landgis@126.com

cursor c1 is

select b.JOB from user_jobs b;

begin

for rr in c1 LOOP

begin

dbms_job.remove(rr.job);

exception

when others then

dbms_output.put_line(sqlcode || ':' || sqlerrm);

end;

end loop;

end;

--删除procedure

procedure deleteall is

begin

deletetable;

deletesource;

deletejob;

commit;

execute immediate 'purge recyclebin';

end;

end pack_deleteall;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值