您好,我正在嘗試解釋以下示例的結果,但我不知道為什么。希望有人能為我闡明一下。謝謝
代碼 結果
DECLARE
v_total NUMBER := 0;
BEGIN
<<BeforeTopLoop>>
FOR i IN 1..10 LOOP
v_total := v_total 1;
dbms_output.put_line('Total is: ' || v_total);
FOR j IN 1..10 LOOP
CONTINUE BeforeTopLoop WHEN i j > 5;
v_total := v_total 1;
END LOOP;
END LOOP;
END two_loop;
uj5u.com熱心網友回復:
<<BeforeTopLoop>>是一個標簽,可以作為某些流控制操作的目標,例如CONTINUE.
在下面的示例中,它只是有條件地縮短內回圈并將控制權轉移到外回圈的頂部,同時保持變數的當前狀態。
要公開 的狀態更改total,請參閱以下建議。
嘗試按以下方式調整程式,然后重新運行。
您會注意到內部回圈如何在不觸及外部 put_line 陳述句的情況下增加總數。
DECLARE
v_total NUMBER := 0;
BEGIN
<<BeforeTopLoop>>
FOR i IN 1..10 LOOP
v_total := v_total 1;
dbms_output.put_line('Total is: ' || v_total);
FOR j IN 1..10 LOOP
CONTINUE BeforeTopLoop WHEN i j > 5;
v_total := v_total 1;
dbms_output.put_line('Intermediate is: ' || v_total); -- Try adding this line and run again
END LOOP;
END LOOP;
END two_loop;
結果:
Total is: 1
Intermediate is: 2
Intermediate is: 3
Intermediate is: 4
Intermediate is: 5
Total is: 6
Intermediate is: 7
Intermediate is: 8
Intermediate is: 9
Total is: 10
Intermediate is: 11
Intermediate is: 12
Total is: 13
Intermediate is: 14
Total is: 15
Total is: 16
Total is: 17
Total is: 18
Total is: 19
Total is: 20
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/428798.html
