PL/SQL 标签与GOTO语句
2017-02-16 17:08
309 查看
标签
标签是一个命名标记,用于对程序的特定部分做标记,格式为<<label>> statements;
标签可用于程序块,循环以及
GOTO等语句。
用于程序块
标记程序块的语法为:<<block_label>> DECLARE ... BEGIN ... END;
随后在程序块中,可以使用语法
block_label.declared_object
的方式引用对应的程序块中声明的对象。通过这个特性可以实现在嵌套块中具有相同名称的声明对象时,从子块中引用父块中的同名对象。
<<parent>> DECLARE variable1 NUMBER := 0; BEGIN <<child>> DECLARE variable1 NUMBER := 1; BEGIN DBMS_OUTPUT.PUT_LINE('parent: ' || TO_CHAR(parent.variable1)); DBMS_OUTPUT.PUT_LINE('child: ' || TO_CHAR(child.variable1)); END; END;
用于循环
标记循环的语法为:<<label>> LOOP sequence_of_statements; END LOOP label;
在有多重嵌套循环的时候,使用标签可以使程序更加易读。
用于GOTO语句
GOTO语句结合标签使用可以实现无条件的跳转。BEGIN GOTO label_1; statments1; <<label_1>> statements2; END;
statments1不会被执行,因为
GOTO语句直接把程序流跳转到了
statements2处。
同
GOTO语句用法类似,标签还可用于
EXIT和
CONTINUE语句。
GOTO的限制
不能使用GOTO跳转到
IF语句,
CASE语句,
LOOP语句以及子块内部
不能使用
GOTO语句直接从异常处理中跳转回当前的块的执行区中
不能使用
GOTO语句直接跳转出子程序(函数或过程),只能跳转到子程序的末尾,
GOTO语句只能在当前块中跳转
不能从
4000 IF语句的一个分支中用
GOTO条件跳转到另一个分支,同样也不能在
CASE语句的不同
WHEN分支之间进行跳转
GOTO并不常用
虽然在一些特定的情况下,GOTO语句可以更加容易表达某些逻辑。但是
GOTO实现的功能,通过
IF和
CASE也可以实现,而
GOTO的引入让代码逻辑变得不太简洁易读,所以
GOTO并不常用。
相关文章推荐
- PL/SQL中GOTO语句和标签
- 【DB.PL/SQL】程序流程控制 —— GOTO语句
- ORACLE PL/SQL 也支持GOTO语句
- 《java核心技术》之读书札记D1:没有goto的标签语句
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- Oracle [PL/SQL]中的条件语句
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程十 写执行语句
- pl/sql 分页语句
- Oracle中PL/SQL的CASE语句
- Oracle中PL/SQL的循环语句
- 在oracle的PL程序块中执行一个varchar2类型变量中的sql 语句
- pl/sql sql语句
- PL_SQL 的 循环语句FOR 循环测试
- [Oracle PL/SQL]当数据表设计成具有父ID的时候,当需要选择所有与父ID同根生的所有节点的时候,使用的SQL语句
- 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL
- 在PL/SQL中使用SQL,动态SQL语句
- 收集PL/SQL中的有用语句
- 如何用SQL查询语句获取Oracle表 树形结构的记录(PL/SQL )
- PL/SQL的循环语句
- Oracle 编写PL/SQL语句导入数据语句问题总结