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循环,设置退出方式,简单实用。

时间: 2024-10-14 13:07:42

DB2中循环日期跑数据的相关文章

DB2 中日期 比较

在DB2中的Date 一共识别三种格式,最常见的是这样 '2013-12-12' 对,你没看错,DB2认为这样的字符串就是Date数据 然后我们可以利用函数这样寻找日期区间 select * from users where g_time between '2003-05-04 ' and '2003-05-08' 也可以利用操作符来进行常规的日期大小比较 select * from users where g_time >= '2003-05-04 ' 这篇文档更加详细http://www.c

通过双重for循环来找到JSON中不重复的数据

//通过双重for循环来找到JSON中不重复的数据 var count = 0; for ( i=0; i<json.length; i++) { for ( j=0; j<i; j++) { if ( json[j].api_id == json[i].api_id ) { count++; } } if ( count == 0 ) { kong.getApiName( json[i].api_id ); } }

DB2中字符、数字和日期类型之间的转换

DB2中字符.数字和日期类型之间的转换 一般我们在使用DB2或Oracle的过程中,经常会在数字<->字符<->日期三种类 型之间做转换,那么在DB2和Oracle中,他们分别是如何实现的呢?在Oracle这几个类型之间的转换是十分方便的,通过 to_char|to_date|to_number函数即可完成类型转换.本小节主要介绍DB2中的一些知识,从Oracle转过来的DBA或开发人 员,可以对比着学习. 数字型到字符型的转换 DB2中的col_a字段 字段类型 到字符类型的转换

在表中循环插入日期

在表中循环插入日期 --创建会话级临时表 create global temporary table rq(id number primary key ,sj varchar2(20)) on commit preserve rows select * from rq --循环插入日期 declare c_i number :=1; v_i number ; v_firstday varchar2(20); v_lastday varchar(20); begin select to_char(

sql 循环处理表数据中当前行和上一行中某值相+/-

曾经,sql中循环处理当前行数据和上一行数据浪费了我不少时间,学会后才发现如此容易,其实学问就是如此,难者不会,会者不难. 以下事例,使用游标循环表#temptable中数据,然后让当前行和上一行中的argument1 相加 存放到当前行的 argument2 中,比较简单. --drop table #temptable create table #temptable ( argument1 int, argument2 int, argument3 datetime ) declare @r

创建存储过程向表中循环添加数据

CREATE PROCEDURE dowhile() BEGIN DECLARE n int; set n=1; WHILE n<=1000 do INSERT into hasindex(num) VALUES (n); set n=n+1; END WHILE; END; CALL dowhile();创建存储过程向表中循环添加数据

通过双重for循环来找到JSON中不反复的数据

//通过双重for循环来找到JSON中不反复的数据 var count = 0; for ( i=0; i<json.length; i++) { for ( j=0; j<i; j++) { if ( json[j].api_id == json[i].api_id ) { count++; } } if ( count == 0 ) { kong.getApiName( json[i].api_id ); } count = 0; ?} 原文地址:https://www.cnblogs.c

在Extjs中对日期的处理,以及在后端数据在SQL语句的判断处理

jsp页面可选择时间: { xtype : 'datefield', id : 'START_CREATION_DATE_', format : 'Y-m-d H:i:s', submitFormat : 'Y-m-d H:i:s', value : new Date(new Date().getFullYear(), new Date().getMonth(), '1'), fieldLabel : '开始时间' }, { xtype : 'datefield', id : 'END_CREA

android中webservce获取soapObject数据的解析问题

问题描述 最近在尝试做个开发,用到网络通讯这块.有几个问题: 1android客户端已经得到weibservice发挥的soapObject对象  但是怎么解析成我需要的数据类型? 通过网页得到的xml文件 <?xml version="1.0" encoding="utf-8" ?> - <user_info> <USER_NO>adminbb</USER_NO> <USER_NAME>admin<