首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2中的PLSQL支持嵌套状态吗?

DB2中的PLSQL支持嵌套状态吗?
EN

Stack Overflow用户
提问于 2019-12-20 11:38:23
回答 1查看 170关注 0票数 0

我对DB2数据库有以下查询:

代码语言:javascript
复制
    BEGIN
        DECLARE NUMBER_OF_ROWS INT;
        DECLARE ITER_INDX_1 INT;
        DECLARE ITER_INDX_2 INT;
        SET ITER_INDX_1 = 0;
        SET ITER_INDX_2 = 0;
        SET NUMBER_OF_ROWS = (SELECT COUNT(*) FROM LOOPS.LTV_BEISPIEL);
        WHILE ITER_INDX_1 < NUMBER_OF_ROWS DO
            WHILE ITER_INDX_2 < NUMBER_OF_ROWS DO
                INSERT INTO LOOPS.TEST VALUES (1);
                SET ITER_INDX_2 = ITER_INDX_2 + 1;
            END WHILE;
            SET ITER_INDX_1 = ITER_INDX_1 + 1;
        END WHILE;
    END
    ;

查询COUNT语句后,NUMBER_OF_ROWS变量id设置为10。由于有两个WHILE语句,其中一个是嵌套的,这段代码必须生成10*10=100插入,但出于某种原因,它只执行10次插入。我的逻辑中是有错误,还是DB2中有错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-20 11:39:35

您不会在第一个循环之后重置ITER_INDX_2

代码语言:javascript
复制
        SET ITER_INDX_1 = ITER_INDX_1 + 1;
        SET ITER_INDX_2 = 0;

因此,回答您的问题:这是您的代码中的一个bug。

老实说,我会在循环的顶端这样做:

代码语言:javascript
复制
   WHILE ITER_INDX_1 < NUMBER_OF_ROWS DO
        SET ITER_INDX_2 = 0;
        WHILE ITER_INDX_2 < NUMBER_OF_ROWS DO
            INSERT INTO LOOPS.TEST VALUES (1);
            SET ITER_INDX_2 = ITER_INDX_2 + 1;
        END WHILE;
        SET ITER_INDX_1 = ITER_INDX_1 + 1;
    END WHILE;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59424690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档