create or replace
FUNCTION DROP_ALL_SCHEMA_OBJECTS RETURN NUMBER AS
PRAGMA AUTONOMOUS_TRANSACTION;
cursor c_get_objects is
select object_type,'"'||object_name||'"'||decode(object_type,'TABLE' ,' cascade constraints',null) obj_name
from user_objects
where object_type in ('TABLE','VIEW','PACKAGE','SEQUENCE','SYNONYM', 'MATERIALIZED VIEW')
order by object_type;
cursor c_get_objects_type is
select object_type, '"'||object_name||'"' obj_name
from user_objects
where object_type in ('TYPE');
BEGIN
begin
for object_rec in c_get_objects loop
execute immediate ('drop '||object_rec.object_type||' ' ||object_rec.obj_name);
end loop;
for object_rec in c_get_objects_type loop
begin
execute immediate ('drop '||object_rec.object_type||' ' ||object_rec.obj_name);
end;
end loop;
end;
RETURN 0;
END DROP_ALL_SCHEMA_OBJECTS;
Создайте вышеуказанную функцию (автономную, чтобы DDL можно было вызывать через функцию)
тогда вы можете просто:
select DROP_ALL_SCHEMA_OBJECTS from dual;
когда вы хотите отбросить все ваши объекты, убедитесь, что вы не пытаетесь сбросить proc ваш бег (меня не волнует процесс, поэтому у меня нет procs или функций в списке object_type)
если вы хотите отбросить все, что вам нужно, анонимный блок
но мне нужно было сделать это с помощью инструмента, который разрешал только ANSI SQL (не PLSQL), следовательно, сохраненный процесс.
Наслаждайтесь.