zoukankan      html  css  js  c++  java
  • 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循环,设置退出方式,简单实用。

  • 相关阅读:
    Pycharm2019.1.2安装详解
    下载及安装Python详细步骤
    ClientDataSet中撤消与恢复操作及执行细节
    Delphi KeyPress KeyDown时Key的值
    fastReport动态传参【含图片】
    Delphi静态和动态调用dll的实例
    关于SPC系统
    SQL Server 占用内存太高,查找占用内存高以及影响其性能的sql语句
    SqlServer 资源占用情况[简易]
    Sqlserver DMV诊断和调优DB性能
  • 原文地址:https://www.cnblogs.com/Alex-Zeng/p/4758784.html
Copyright © 2011-2022 走看看