Samdy_Chan 发表于 2012-03-23 18:40

请教关于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语句会使程序变得混乱,思路不清晰,但觉得有时可能需要使用,了解一下也好,还望各位大侠协助解答,谢谢!

Samdy_Chan 发表于 2012-03-24 09:01

有人可以帮忙解答下吗?非常感谢!

moon38sun 发表于 2012-03-26 17:02

本帖最后由 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;

dingning239 发表于 2012-03-26 18:31

楼上正
页: [1]
查看完整版本: 请教关于goto跳转标签的使用问题!