- PL/SQL 教程
- PL/SQL - 首页
- PL/SQL - 概述
- PL/SQL - 环境
- PL/SQL - 基本语法
- PL/SQL - 数据类型
- PL/SQL - 变量
- PL/SQL - 常量和字面量
- PL/SQL - 运算符
- PL/SQL - 条件
- PL/SQL - 循环
- PL/SQL - 字符串
- PL/SQL - 数组
- PL/SQL - 过程
- PL/SQL - 函数
- PL/SQL - 游标
- PL/SQL - 记录
- PL/SQL - 异常
- PL/SQL - 触发器
- PL/SQL - 包
- PL/SQL - 集合
- PL/SQL - 事务
- PL/SQL - 日期和时间
- PL/SQL - DBMS 输出
- PL/SQL - 面向对象
- PL/SQL 有用资源
- PL/SQL - 问答
- PL/SQL - 快速指南
- PL/SQL - 有用资源
- PL/SQL - 讨论
PL/SQL - GOTO 语句
在 PL/SQL 编程语言中,GOTO 语句提供从 GOTO 到同一子程序中带标签语句的无条件跳转。
注意 - 不建议在任何编程语言中使用 GOTO 语句,因为它使跟踪程序的控制流变得困难,从而使程序难以理解和修改。任何使用 GOTO 的程序都可以重写,使其不需要 GOTO。
语法
PL/SQL 中 GOTO 语句的语法如下:
GOTO label; .. .. << label >> statement;
流程图
示例
DECLARE a number(2) := 10; BEGIN <<loopstart>> -- while loop execution WHILE a < 20 LOOP dbms_output.put_line ('value of a: ' || a); a := a + 1; IF a = 15 THEN a := a + 1; GOTO loopstart; END IF; END LOOP; END; /
当在 SQL 提示符下执行上述代码时,它会产生以下结果:
value of a: 10 value of a: 11 value of a: 12 value of a: 13 value of a: 14 value of a: 16 value of a: 17 value of a: 18 value of a: 19 PL/SQL procedure successfully completed.
GOTO 语句的限制
PL/SQL 中的 GOTO 语句施加以下限制:
GOTO 语句不能分支到 IF 语句、CASE 语句、LOOP 语句或子块中。
GOTO 语句不能从一个 IF 语句子句分支到另一个,也不能从一个 CASE 语句 WHEN 子句分支到另一个。
GOTO 语句不能从外部块分支到子块(即内部 BEGIN-END 块)。
GOTO 语句不能从子程序中分支出来。要提前结束子程序,请使用 RETURN 语句或让 GOTO 分支到子程序结束前的某个位置。
GOTO 语句不能从异常处理程序分支回当前的 BEGIN-END 块。但是,GOTO 语句可以从异常处理程序分支到封闭块。
plsql_loops.htm
广告