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

本文提供了一个Oracle 10g专用的PL/SQL包,用于批量删除当前用户下的所有对象,包括表、视图、存储过程、包、Java源代码及计划任务。在执行前务必做好数据备份,以防数据丢失。

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;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值