Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql 简单的循环被卡住了_Plsql - Fatal编程技术网

Plsql 简单的循环被卡住了

Plsql 简单的循环被卡住了,plsql,Plsql,我试图运行此pl/sql代码,但显然它陷入了循环中。我认为逻辑是正确的 DECLARE v_num1 NUMBER := 1; v_num2 NUMBER := 1; v_total NUMBER := 0; BEGIN WHILE v_num2 < 6 LOOP v_total := v_num1 + v_num2; DBMS_OUTPUT.PUT_LINE(v_num1 || ' + ' || v_num2 || ' = ' ||

我试图运行此pl/sql代码,但显然它陷入了循环中。我认为逻辑是正确的

DECLARE
  v_num1    NUMBER := 1;
  v_num2    NUMBER := 1;
  v_total   NUMBER := 0;
BEGIN

  WHILE v_num2 < 6 LOOP

    v_total := v_num1 + v_num2;
    DBMS_OUTPUT.PUT_LINE(v_num1 || ' + ' ||  v_num2 || ' = ' || v_total);

    IF v_num2  = 5 THEN
        v_num2 := 1;
        v_num1 := v_num1 + 1;
    ELSE
        v_num2 := v_num2 + 1;
    END IF;

  END LOOP;

END;
声明
v_num1编号:=1;
v_num2编号:=1;
v_总数:=0;
开始
而v_num2<6圈
v_总计:=v_num1+v_num2;
DBMS|u输出.PUT|u行(v|num1 |‘+’v| | v|num2 | |‘=’| v|u总计);
如果v_num2=5,则
v_num2:=1;
v_num1:=v_num1+1;
其他的
v_num2:=v_num2+1;
如果结束;
端环;
结束;

好吧,每次v_num2变为5时,您都会将其重置为1,因此v_num2将始终小于6,循环将永远运行

  IF v_num2  = 5 THEN
        v_num2 := 1;
        v_num1 := v_num1 + 1;
    ELSE
        v_num2 := v_num2 + 1;
    END IF;

当v_num2<6循环时,您正在循环

但当v_num2为5时,则将其赋值为1

v_num2:=1


所以它永远不会等于6,因此将永远循环。

是的,我瞎了。谢谢