您的位置:首页 > 数据库 > Oracle

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

2008-12-10 11:00 671 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐