简单循环卡住了

时间:2013-11-14 17:19:12

标签: 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 || ' = ' || 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;

2 个答案:

答案 0 :(得分:1)

好吧,每次到达5时你都会将v_num2重置为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;

答案 1 :(得分:0)

你正在循环WHILE v_num2&lt; 6 LOOP

但是当v_num2为5时,则为其分配1

v_num2:= 1;

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