CONTINUE WHEN 示例解释 - Oracle SQL
CONTINUE WHEN example explanation - Oracle SQL
您好,我正在尝试解释以下示例的结果,但我不明白为什么。希望有人能为我阐明它。谢谢
Code + Result
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;
<<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
您好,我正在尝试解释以下示例的结果,但我不明白为什么。希望有人能为我阐明它。谢谢
Code + Result
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;
<<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