我正在尝试运行这个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;
答案 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,因此将永远循环。