如何在PL/SQl中用语句执行存储过程中的MAIN函数

xiaobao929 2010-11-27 10:58:25
因为要定时执行这个存储过程,所以需要用bat调用下一个sql文件,这个文件就是执行存储过程中的MAIN

另求教如何用语句批量删除表
表格式为 DATA_ERR_*****
因为表比较多,所以手动执行truncate tablet *** ,需要很多次,比较麻烦

先说3Q~


不知道描述的时候清楚,本人对Oracle是菜鸟一只,刚刚接触
...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中的彩虹 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaobao929 的回复:]
因为要定时执行这个存储过程,所以需要用bat调用下一个sql文件,这个文件就是执行存储过程中的MAIN

另求教如何用语句批量删除表
表格式为 DATA_ERR_*****
因为表比较多,所以手动执行truncate tablet *** ,需要很多次,比较麻烦

先说3Q~


不知道描述的时候清楚,本人对Oracle是菜鸟一只,刚刚接触
[/Quote]

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;






xiaobao929 2010-11-27
  • 打赏
  • 举报
回复
存储过程有现成的
但是不知道是否是动态的
下面的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;
/


YY_MM_DD 2010-11-27
  • 打赏
  • 举报
回复
写个存储过程,使用动态的sql
YY_MM_DD 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaobao929 的回复:]
因为要定时执行这个存储过程,所以需要用bat调用下一个sql文件,这个文件就是执行存储过程中的MAIN

另求教如何用语句批量删除表
表格式为 DATA_ERR_*****
因为表比较多,所以手动执行truncate tablet *** ,需要很多次,比较麻烦

先说3Q~


不知道描述的时候清楚,本人对Oracle是菜鸟一只,刚刚接触
[/Quote]
declare
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;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧