PLSQL中通过procedure循环调用另一个procedure补数据

工作中,遇到了如下需求,有一个存储过程,通过配置的Job任务每天刷数据,后来发现,存储过程逻辑错误,需要重新刷数据,即:需要把20170701到20180131的数据重新跑一遍。即把20170701-20180131的所有日期重新作为参数传入到我的存储过程中pro_kf_dp_hot_up_map。

首先的想法,是一个一个的通过测试,传入日期,穿了两天的感觉这样做太蠢了。原因如下:

  • 一来,同样的重复操作,肯定可以通过程序实现;
  • 二来,我需要时刻盯着是否在上一个日期的存储过程已经执行完;
  • 三来,由于人为的操作时间的不连续性,我无法立刻执行下一个。

最终的解决方法是再写一个存储过程,通过循环loop,一次性执行完。如下:

create or replace procedure pro_call_pro     --pro_kf_dp_hot_up_map
is
    v_date int;
begin
    v_date := '20180131';
    while (v_date >= '20170701') loop
        pro_kf_dp_hot_up_map(v_date);
        dbms_output.put_line(v_date);
        v_date := to_char(to_date(v_date,'YYYYMMDD')-1,'YYYYMMDD');
    end loop;
end;

特将此过程记录下来,一来防止遗忘,二来,提供一个解决普遍问题的思路:能偷懒的就偷懒。����

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值