DB2中循环日期跑数据

1.数据库版本:

2.具体实现方式:

CREATE OR REPLACE PROCEDURE DB2USER.RUN_PROCEDURE_BY_LOOP(IN begin_date VARCHAR(8),IN end_date VARCHAR(8))
  /******************************************************************************
     NAME:
     PURPOSE:
  
     REVISIONS:
     Ver        Date        Author        Description
     ---------  ----------  ------------  ------------------------------------
     1            20150825     ZEN           循环跑多天的数据
  ******************************************************************************/
  LANGUAGE SQL
BEGIN
  DECLARE V_LOCATION VARCHAR(100);
  DECLARE V_START_TIME TIMESTAMP;
  DECLARE V_END_TIME TIMESTAMP;
  DECLARE V_SQLMSG VARCHAR(255);
  DECLARE EXIT HANDLER FOR SQLEXCEPTION                                                                                        
   BEGIN                                                                                                                     
      GET DIAGNOSTICS EXCEPTION 1 V_SQLMSG = MESSAGE_TEXT;                                                                      
      CALL DB2USER.PRO_LOG(TO_CHAR(V_START_TIME,'YYYYMMDD'),'RUN_PROCEDURE_BY_LOOP','循环跑多天的数据',V_START_TIME,current timestamp,'ERROR',V_LOCATION,V_SQLMSG);                                                                            
  END;
  /*清空目标表*/
  SET V_START_TIME = TO_DATE(begin_date,'YYYYMMDD');
  SET V_END_TIME = TO_DATE(end_date,'YYYYMMDD');
  SET V_LOCATION = '清空数据';
  
  time_loop:
   LOOP
     INSERT INTO Temp_TEST VALUES(V_START_TIME,TO_CHAR(V_START_TIME,'YYYYMMDD'));
     
     --CALL DB2USER.PRO_S_CLM_PFM_DAY(TO_CHAR(V_START_TIME,'YYYYMMDD'));
     
     SET V_START_TIME = V_START_TIME + 1 day ;
       IF (V_START_TIME > V_END_TIME)
        THEN LEAVE time_loop;
       END IF;
    
   END LOOP time_loop;

COMMIT;
  
  
   --CALL DB2USER.PRO_LOG(TO_CHAR(V_START_TIME,'YYYYMMDD'),'RUN_PROCEDURE_BY_LOOP','循环跑多天的数据',V_START_TIME,current timestamp,'SUCCESS','','');
END;

3.总结:

a.DB2中可以直接判断退出循环,如果被oracle的for循环惯坏了,想到这一点不太容易。

b.直接标签loop循环,设置退出方式,简单实用。

转载于:https://www.cnblogs.com/Alex-Zeng/p/4758784.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值