0

我正在尝试运行此 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;
4

2 回答 2

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;
于 2013-11-14T17:22:25.293 回答
0

您正在循环 WHILE v_num2 < 6 LOOP

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

v_num2 := 1;

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

于 2013-11-14T17:22:29.243 回答