ORACLE小工具:存储过程清空所有表或使所有触发器失效

时间:2024-10-08 13:36:23

清空所有表:

CREATE OR REPLACE PROCEDURE CLEAN_TABLES as
v_tablename varchar2(256);
cursor cur_tablename is
select object_name from user_objects where object_type = 'TABLE';
begin
open cur_tablename;
loop
fetch cur_tablename
into v_tablename;
exit when cur_tablename%notfound;
execute immediate 'delete from ' || v_tablename || '';
end loop;
close cur_tablename;
end CLEAN_TABLES;

运行:

begin
CLEAN_TABLES();
end;

失效所有触发器:

CREATE OR REPLACE PROCEDURE DISABLE_TRIGGER as
v_sql varchar2(100);
v_ref sys_refcursor;
begin
for v_ref in (select object_name
from user_objects
where object_type = 'TRIGGER') loop
v_sql := 'alter trigger ' || v_ref.object_name || 'disable';
execute immediate v_sql;
dbms_output.put_line(v_sql);
end loop;
exception
when others then
dbms_output.put_line(SQLCODE || '---' || SQLERRM);
end DISABLE_TRIGGER;

生效所有触发器:

CREATE OR REPLACE PROCEDURE ENABLE_TRIGGER as
v_sql varchar2(100);
v_ref sys_refcursor;
begin
for v_ref in (select object_name
from user_objects
where object_type = 'TRIGGER') loop
v_sql := 'alter trigger ' || v_ref.object_name || 'enable';
execute immediate v_sql;
dbms_output.put_line(v_sql);
end loop;
exception
when others then
dbms_output.put_line(SQLCODE || '---' || SQLERRM);
end ENABLE_TRIGGER;

that's it