/*
1.刪除存儲過程
2.備份data表
3.刪除data表
*/
DECLARE
V_SQL VARCHAR2(2000);--刪除的語句
CURSOR C1 IS --要刪除的存儲過程名
select * from (
select distinct upper(owner)||'.'||upper(object_name) procedures from dba_procedures)WHERE procedures in (
'ERMP_DATA.CSTM_TEN_HTZQRZ_PROC', 'ERMP_DATA.CUSTOMER_SCLIENT_01_2_PROC'
);
CURSOR T1 IS--要刪除的表名
select * from (
select OWNER||'.'||TABLE_NAME TABLE_NAME from dba_tables where owner ='ERMP_DATA'
) where TABLE_NAME in (
'ERMP_DATA.CSTM_TEN_HTZQRZ','ERMP_DATA.CUSTOMER_SCLIENT_01_2','ERMP_DATA.LQD_NSFR1','ERMP_DATA.MKT_CURRENCY_EXCHANGE_RATE',
);
BEGIN
for p1 in C1 loop
V_SQL:= ' DROP PROCEDURE '|| p1.procedures;--下線存儲過程
dbms_output.put_line(V_SQL);
EXECUTE IMMEDIATE V_SQL;
end loop;
for p2 in T1 loop
V_SQL:= ' CREATE TABLE ERMP_HIST.'||substr(p2.TABLE_NAME,11)||' AS SELECT * FROM '|| p2.TABLE_NAME; --備份表
dbms_output.put_line(V_SQL);
EXECUTE IMMEDIATE V_SQL;
V_SQL:= ' DROP TABLE '|| p2.TABLE_NAME;--刪除表
dbms_output.put_line(V_SQL);
EXECUTE IMMEDIATE V_SQL;
end loop;
END;
/
oracle 批量刪除從存儲過程(物理備份),表及備份表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.