请教关于goto跳转标签的使用问题!
大家好:请问如何实现在PL/SQL程序中,当使用goto lab1语句时,才会执行<<lab1>>标签的代码,但是我测试发现,无论有无执行goto,都会执行<<lab1>>内的代码,这样就觉得使用goto失去了意义,如下代码所示:
SQL> declare
2 v_count number:=0;
3begin
4 for i in 1..3 loop
5 v_count:=v_count+i;
6 if v_count=10 then
7 goto lab1;
8 end if;
9 end loop;
10 <<lab1>>
11 dbms_output.put_line('v_count=10了');
12end;
13/
v_count=10了
PL/SQL procedure successfully completed
-----
以上代码所示,当只有v_count=10 ,才会执行goto lab1;执行<<lab1>>内的代码,但是上面代码,明显不满足v_count=10,但是仍然会执行<<lab1>>内的代码,输出:“v_count=10了”。
请问如何实现在PL/SQL程序中,当使用goto lab1语句时,才会执行<<lab1>>标签的代码?
虽然知道使用goto语句会使程序变得混乱,思路不清晰,但觉得有时可能需要使用,了解一下也好,还望各位大侠协助解答,谢谢! 有人可以帮忙解答下吗?非常感谢! 本帖最后由 moon38sun 于 2012-03-26 23:14 编辑
goto是改变执行顺序,不满足条件的时候,仍然顺序执行。
要是希望不满足条件的时候不执行,可以加一个条件判断,就可以了。
if v_count!=10 then
goto quit;
end if;
<<lab1>>
dbms_output.put_line('v_count=10');
<<quit>>
null; 楼上正
页:
[1]