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子句跳到另一个子句中也是非法的.
c.从一个异常处理块内跳转到当前块是非法的。
2.为循环设定标签
循环本身是可以被设定标签的。如果进行了设定,那么可以在EXIT语句中使用该标签指明要退出哪个循环.例如:
如果循环设定了标签,那么可以在END LOOP语句的后面包含该标签名,如上面所示.
3.谨慎的使用GOTO语句
在使用GOTO语句时一定要小心,不然都是些跳来跳去的代码,很难理解也很难维护.
几乎所有使用GOTO的情况都可以使用其他的PL/SQL控制结构,例如循环或者条件结构,来重新进行编写.也可以使用异常处理来退出深层嵌套的循环,而不用直接跳转到结尾.
4.null语句
在一些情况下,你可能想要显式的指明不进行任何操作.这可以通过使用NULL语句来实现.NULL语句不做任何事情,它只是一个占位符.
例如:
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;
相关文章推荐
- PL/SQL 标签与GOTO语句
- ORACLE PL/SQL 也支持GOTO语句
- 【DB.PL/SQL】程序流程控制 —— GOTO语句
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程十 写执行语句
- Mybatis+MySql 一个标签中执行多条sql语句
- 原来java中也有类似goto语句的标签啊--java label标签(一)
- PL/SQL Developer-SQL语句大小写转换
- MyEclipse中 将字符串回车自动换行的配置(自己最常用的就是解决在pl/sql工具下美化好的sql语句放入字符串中)
- Oracle中在pl/sql developer修改表的两种语句
- ORACLE PL/SQL编程之三:PL/SQL流程控制语句
- PL/SQL编程重点语句输出整理
- pl/sql developer 查询语句无法使用中文条件
- PL/SQL常用语句
- 利用pl/sql执行计划评估SQL语句的性能
- PL\SQL DML语句介绍
- PL/SQL之三- 流程控制语句
- SQL语句、PL/SQL语句、SQL*PLUS语句结束符号
- 在oracle的PL程序块中执行一个varchar2类型变量中的sql 语句
- PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标)
- Oracle中PL/SQL的CASE语句