因为要定时执行这个存储过程,所以需要用bat调用下一个sql文件,这个文件就是执行存储过程中的MAIN另求教如何用语句批量删除表
表格式为 DATA_ERR_*****
因为表比较多,所以手动执行truncate tablet *** ,需要很多次,比较麻烦先说3Q~
不知道描述的时候清楚,本人对Oracle是菜鸟一只,刚刚接触
表格式为 DATA_ERR_*****
因为表比较多,所以手动执行truncate tablet *** ,需要很多次,比较麻烦先说3Q~
不知道描述的时候清楚,本人对Oracle是菜鸟一只,刚刚接触
但是不知道是否是动态的
下面的MAIN的源码,MAIN还调用了其它的存储过程
CREATE OR REPLACE PROCEDURE "MAIN" (max_frag int) is
begin
declare
i_num int;
i_len int;
s_num varchar(20);
begin i_num :=0;
i_len :=length(i_num); LOOP EXIT WHEN i_num>max_frag;
s_num :=LPAD(i_num,i_len,0);
---create_analysis_cdr_origin (s_num);
main_preprocess(s_num);
main_check;
execute immediate 'insert into analysis_cdr_session_all select * from analysis_cdr_session';
dbms_output.put_line(s_num||'+'||i_len);
execute immediate 'commit';
--main_analysis;
--main_report;
i_num := i_num +1 ; end loop; create_diff_date_session;
execute immediate 'commit';
create_analysis_cdr_ppp;
execute immediate 'commit';
-- dbms_output.put_line('do create_analysis_cdr_user');
create_analysis_cdr_user;
execute immediate 'commit';
main_check;
execute immediate 'commit';
check_repeat_cdr;
execute immediate 'commit'; end;
end main;
/
declare
str varchar2(100);
begin
for i in (select table_name from user_tables where instr(table_name,'DATA_ERR',1)>0)
loop
str:='truncate table '||i.table_name;
execute immediate str;
end loop;
end;
str varchar2(1000);
begin
for cur_sql in (select 'drop table '||table_name sqlStr from user_tables where table_name like 'DATA_ERR_%')
loop
execute immediate cur_sql.str;
end loop;
end;