您的位置:首页 > 数据库 > SQL

PL/SQL中GOTO语句和标签

2009-10-21 22:39 274 查看
在PL/SQL中也提供GOTO语句,其语法是

 

GOTO label;

 

这里label是在PL/SQL块中定义的标签.标签是用双箭头括号括起来的.当执行GOTO语句的时候,控制会立即转到由标签标识的语句.

 

1.对于GOTO的限制

 

a.对于块,循环或者IF语句而言,想要从外层跳到内层是非法的.

 

b.使用GOTO子句从一个IF子句跳到另一个子句中也是非法的.

 

begin

if x>3 then

...

goto<<lbl>>

else

<<lbl>>

...

end if;

end;


 

c.从一个异常处理块内跳转到当前块是非法的。

 

2.为循环设定标签

循环本身是可以被设定标签的。如果进行了设定,那么可以在EXIT语句中使用该标签指明要退出哪个循环.例如:

 

<<l_outer>>

for v_outer_index in 1..10 loop

...

<<I_inner>>

for v_inner_index in 1..30 loop

...

if v_outer_index > 5 then

EXIT I_outer;

end if;

end loop I_inner;

end loop I_outer;


 

如果循环设定了标签,那么可以在END LOOP语句的后面包含该标签名,如上面所示.

 

3.谨慎的使用GOTO语句

在使用GOTO语句时一定要小心,不然都是些跳来跳去的代码,很难理解也很难维护.

 

几乎所有使用GOTO的情况都可以使用其他的PL/SQL控制结构,例如循环或者条件结构,来重新进行编写.也可以使用异常处理来退出深层嵌套的循环,而不用直接跳转到结尾.

 

4.null语句

在一些情况下,你可能想要显式的指明不进行任何操作.这可以通过使用NULL语句来实现.NULL语句不做任何事情,它只是一个占位符.

例如:

begin

...

if ... then

...

else

null;

end if;

...

end;


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null