查看: 1780|回复: 1

关于for 循环的一个奇怪问题

菲律宾申博太阳城官网
论坛徽章:
15
NBA季后赛纪念徽章
日期:2008-06-20 11:45:192011新春纪念徽章
日期:2011-01-04 10:24:022010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:羊
日期:2009-09-10 11:27:422009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:鸡
日期:2009-05-11 09:59:57生肖徽章2007版:牛
日期:2009-04-01 11:46:35生肖徽章2007版:猪
日期:2009-03-10 21:37:00生肖徽章2007版:兔
日期:2009-01-15 12:58:59
跳转到指定楼层
1#
发表于 2019-4-9 12:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
版本:DB2/AIX64 9.7.8

CREATE OR REPLACE PROCEDURE ZYDW.SP_test_sc (
    IN PARAM_I_YEAR        INTEGER,
    IN PARAM_I_MONTH        INTEGER,
    IN I_STATE_DATE        VARCHAR(8),
    OUT O_FLAG        INTEGER )
  SPECIFIC SP_test_sc
  LANGUAGE SQL
  NOT DETERMINISTIC
  EXTERNAL ACTION
  MODIFIES SQL DATA
  CALLED ON NULL INPUT
  INHERIT SPECIAL REGISTERS
  OLD SAVEPOINT LEVEL
BEGIN
      DECLARE V_PRC_NAME         VARCHAR (50) DEFAULT 'SP_test_sc'; --定义过程名变量,该变量值与过程名一样
      DECLARE V_PRC_START_TIME   TIMESTAMP;
      DECLARE SQLCODE            INTEGER DEFAULT 0;
      DECLARE V_SQLCODE          INTEGER DEFAULT 0;
      DECLARE V_ROWCOUNT         INTEGER DEFAULT 0;
      DECLARE V_SQLSTR           VARCHAR (500);
      DECLARE V_SQL                           VARCHAR (2000);
      DECLARE V_ELAPSED_TIME     INTEGER DEFAULT 0;
      DECLARE CNT                                                                 INT;


      --SET 初始化变量
      SET V_PRC_START_TIME = CURRENT TIMESTAMP;                     --获取过程起始时间
      --写日志,记录过程开始运行
      CALL ZYDW.SP_LOG_ZYDW (V_PRC_NAME, I_STATE_DATE, V_PRC_START_TIME, 0,
        '0',0,0,'过程开始运行!', O_FLAG);

      IF (V_SQLCODE < 0 OR O_FLAG = -1)
      THEN
                                SET O_FLAG = -1;
                                RETURN;
      END IF;

     A:
      BEGIN
         DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN
            SET V_SQLCODE = SQLCODE; --获取错误代码
            ROLLBACK;
            SET O_FLAG = -1;
         END;

         SET V_PRC_START_TIME = CURRENT TIMESTAMP;                  --获取过程起始时间

          SET CNT = 0;
                FOR C1 AS                                                                                                                                                                                                                                                           
           select  '0' code, '123' cond, '23232' cond1 from ibmsys.dual
            do                                                                                                                                                                                                                                                                  

            set V_SQL =  ''||c1.code;
            
            SET CNT = CNT + 1;

      END FOR;
               
GET DIAGNOSTICS V_ROWCOUNT = ROW_COUNT;--提交记录数
    SET V_ELAPSED_TIME = TIMESTAMPDIFF(4, CHAR(V_PRC_START_TIME - CURRENT TIMESTAMP));
  V_ELAPSED_TIME, '0',  V_ROWCOUNT,  V_SQLCODE, 'test1', O_FLAG);
    IF (V_SQLCODE < 0 OR O_FLAG = -1) THEN
      ROLLBACK;
                        SET      O_FLAG = -1;
      RETURN;
    END IF;

COMMIT;
  END A;
        CALL ZYDW.SP_LOG_ZYDW (V_PRC_NAME, I_STATE_DATE,V_PRC_START_TIME, 0, '0', 0,0, '过程运行结束!',  O_FLAG);
END;


结果就在 for 循环里出现死循环了,请问有遇到过类似情况的童鞋吗?或者有人知道这是啥问题么,谢谢!!!
论坛徽章:
15
NBA季后赛纪念徽章
日期:2008-06-20 11:45:192011新春纪念徽章
日期:2011-01-04 10:24:022010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:羊
日期:2009-09-10 11:27:422009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:鸡
日期:2009-05-11 09:59:57生肖徽章2007版:牛
日期:2009-04-01 11:46:35生肖徽章2007版:猪
日期:2009-03-10 21:37:00生肖徽章2007版:兔
日期:2009-01-15 12:58:59
2#
 楼主| 发表于 2019-4-9 15:45 | 只看该作者
又反复测了一下,应该是指for循环中增加了写日志的函数导致的,在for循环中不能调用函数?

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
菲律宾申博太阳城官网 返回顶部 返回列表
网站地图 万利彩线路测速 重庆时时彩杏彩平台 彩世界pk10
星级百家乐介绍 澳门太阳城官方直营网 申博官方在线充值 申博亚洲官网
网易彩票手机app登入 ada彩票澳洲28 阳光彩票注册网站 澳门励骏线上娱
9188彩票大全 彩运来彩票平台 杏彩官网网址欢迎您 杏彩平台官网
彩运来娱乐 万利彩lottery 9188彩票大全 彩世界pk10
219SUN.COM 528XTD.COM 96jbs.com 538sj.com S618J.COM
233PT.COM 219SUN.COM 833TGP.COM 361xx.com 1112933.COM
278sunbet.com 597XTD.COM 817psb.com vi138.com 897XTD.COM
1117118.COM 1115117.COM 8JQS.COM 911XTD.COM 9999XSB.COM