2013-11-14 116 views
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; 

回答

0

你循環WHILE v_num2 < 6 LOOP

但當v_num2是5,那麼你爲它分配1

v_num2:= 1;

所以它永遠不等於6,因此將永遠循環。

+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;