首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使PL/SQL循环的下一部分工作

无法使PL/SQL循环的下一部分工作
EN

Stack Overflow用户
提问于 2015-11-12 02:59:08
回答 1查看 51关注 0票数 0

我必须创建一个while循环,它以1+1=2..1+4=5..all的方式进行4+4=8,我得到了第一部分,但我坚持下一步该做什么。

代码语言:javascript
运行
复制
 DECLARE 
 v_recno    testloop1.rec_no%TYPE :=1;
 v_ctr      testloop1.ctr%TYPE :=1;
 v_datain   testloop1.data_in%TYPE :=2;

 BEGIN
  WHILE v_recno = 1 AND v_ctr < 5 LOOP
  INSERT INTO testloop1(rec_no, ctr, data_in)
 VALUES(v_recno, v_ctr, v_datain);
 v_recno :=v_recno;
 v_ctr :=v_ctr + 1;
 v_datain :=v_recno + v_ctr;
 END LOOP;
END;
 /

 SQL> @ loop

  PL/SQL procedure successfully completed.

     SQL> select * 
     2  from testloop1;
     REC_NO        CTR DATA_IN
    ---------- ---------- ----------
     1          1 2
     1          2 3
     1          3 4
     1          4 5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 03:09:14

如果我理解你想要达到的目标,你只需要将你的循环封装在一个外部循环中。因此,一个循环将从一个v_recno (外循环)迭代,另一个循环将迭代通过v_ctr (内循环)。类似的东西(未经测试):

代码语言:javascript
运行
复制
DECLARE 
 v_recno    testloop1.rec_no%TYPE :=1;
 v_ctr      testloop1.ctr%TYPE :=1;
 v_datain   testloop1.data_in%TYPE :=1;    --change from 2 to 1

BEGIN
  WHILE v_recno < 5 LOOP
    WHILE v_ctr < 5 LOOP
     v_datain :=v_recno + v_ctr;       --Moved up before insert statement
     INSERT INTO testloop1(rec_no, ctr, data_in)
     VALUES(v_recno, v_ctr, v_datain);
     v_ctr :=v_ctr + 1;
    END LOOP;
   v_recno := v_recno + 1;
   v_ctr := 1;             --Added this to reset
  END LOOP;
END;
 /

使用基本循环:

代码语言:javascript
运行
复制
DECLARE 
 v_recno    testloop1.rec_no%TYPE :=1;
 v_ctr      testloop1.ctr%TYPE :=1;
 v_datain   testloop1.data_in%TYPE :=1;

BEGIN
  LOOP
   LOOP
     v_datain :=v_recno + v_ctr;
     INSERT INTO testloop1(rec_no, ctr, data_in)
     VALUES(v_recno, v_ctr, v_datain);
     v_ctr :=v_ctr + 1;
     IF v_ctr > 4 THEN
         exit;
     END IF;
    END LOOP;
   v_recno := v_recno + 1;
   v_ctr := 1;
     IF v_recno > 4 THEN
         exit;
     END IF;      
  END LOOP;
END;
/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33663655

复制
相关文章

相似问题

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