SQL记录-PLSQL-EXIT/CONTINUE/GOTO
PL/SQL EXIT语句
在PL/SQL编程语言中,EXIT语句有以下两种用法:
当循环中遇到EXIT语句循环立即终止,程序控制继续下一个循环语句后面。
如果使用嵌套循环(即一个循环内的另一个循环),EXIT指令将停止最内层循环的执行,并开始执行的下一行代码的程序段之后。
语法:
在PL/SQL EXIT语句的语法如下:
EXIT;
流程图:

例如:
DECLARE
a number(2) := 10;
BEGIN
-- while loop execution
WHILE a < 20 LOOP
dbms_output.put_line ('value of a: ' || a);
a := a + 1;
IF a > 15 THEN
-- terminate the loop using the exit statement
EXIT;
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: 15 PL/SQL procedure successfully completed.
EXIT WHEN 语句
在EXIT-WHEN语句允许的条件下,在WHEN子句进行评估计算。如果条件为真,循环完成并控制立即传递到END LOOP语句。
以下是EXIT WHEN语句的两个重要方面:
直到条件为true,EXIT-WHEN语句就像一个空语句,除了评估计算条件,并不会终止循环。
循环内部的语句必须更改条件的值。
示例:
PL/ SQL EXIT WHEN语句的语法如下:
EXIT WHEN condition;
EXIT WHEN语句使用EXIT语句条件代替条件语句 if-then 退出一样
示例:
DECLARE
a number(2) := 10;
BEGIN
-- while loop execution
WHILE a < 20 LOOP
dbms_output.put_line ('value of a: ' || a);
a := a + 1;
-- terminate the loop using the exit when statement
EXIT WHEN a > 15;
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: 15 PL/SQL procedure successfully completed.
PL/SQL CONTINUE语句
CONTINUE语句使循环跳过其身的其余部分,并立即重新测试其使用条件重申之前。换句话说,它会强制循环的下一次迭代发生,跳过其间的任何代码。
语法:
continue语句的语法如下:
CONTINUE;
流程图

例子:
DECLARE
a number(2) := 10;
BEGIN
-- while loop execution
WHILE a < 20 LOOP
dbms_output.put_line ('value of a: ' || a);
a := a + 1;
IF a = 15 THEN
-- skip the loop using the CONTINUE statement
a := a + 1;
CONTINUE;
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.
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语句,循环语句或子块。
goto语句不能从一个分支IF语句子句到另一个或从一个CASE语句WHEN子句到另一个。
goto语句不能从外部块分支成子块(即一个内BEGIN-END块)。
goto语句不能分支出来一个子程序。提前结束子程序,要么使用RETURN语句或子程序结束前在正确的GOTO分支的地方。
goto语句不能从一个异常处理分支回到当前BEGIN-END块。但是,GOTO语句可以从一个异常处理程序跳转到一个封闭块。
SQL记录-PLSQL-EXIT/CONTINUE/GOTO的更多相关文章
- SQL记录-PLSQL记录
PL/SQL记录 PL/SQL记录就是可以容纳不同类型的数据项的数据结构.记录由不同字段,类似于数据库表的行. 例如,要保留跟踪图书馆中的书籍.可能要跟踪有关每本书下面的属性类似:标题,作者,主题 ...
- SQL记录-PLSQL循环
PL/SQL循环 可能有一种情况,当需要执行的代码块的几个多次.在一般情况下,语句顺序执行:一个函数的第一条语句,首先执行,然后是第二个...等等. 编程语言提供了各种控制结构,允许更多复杂的执行 ...
- SQL记录-PLSQL游标
PL/SQL游标 Oracle会创建一个存储区域,被称为上下文区域,用于处理SQL语句,其中包含需要处理的语句,例如所有的信息,行数处理,等等. 游标是指向这一上下文的区域. PL/SQL通过控制光标 ...
- SQL记录-PLSQL基本语法与数据类型
PL/SQL基本语法 PL/SQL是一种块结构的语言,这意味着PL/SQL程序被划分和编写代码的逻辑块.每块由三个子部分组成: S.N. 段和说明 1 声明 此部分开头使用关键字DECLARE.它是一 ...
- SQL记录-PLSQL条件控制
PL/SQL条件控制 决策结构需要程序员指定一个或多个条件要计算,或由程序进行测试,如果条件被确定为真那么一条或多条语句被执行,如果要被执行的其它语句条件被确定为假,则选其它执行块. 以下是从在大 ...
- SQL记录-PLSQL变量与常量文字
PL/SQL变量 变量是只不过是一个给定的存储区域,程序可以操纵的名称.PL/SQL每个变量具有一个特定的数据类型,它决定了大小和变量的存储器的值,可以说存储器和设置操作可以施加到可变内被存储的范 ...
- SQL记录-PLSQL事务
PL/SQL事务 数据库事务是一个工作的原子单元,其可以由一个或多个相关的SQL语句组成.所谓的原子性就是数据库的修改所带来的构成事务的SQL语句可以集体被提交,即永久到数据库或从数据库中(撤消) ...
- SQL记录-PLSQL包
PL/SQL包 PL/SQL包是组逻辑相关的PL/SQL类型,变量和子程序模式对象. 程序包将有两个强制性的部分: 包装规范定义 包体或定义 包装规范定义 规范是接口到包.它只是声明的类型,变量,常量 ...
- SQL记录-PLSQL触发器
PL/SQL触发器 触发器是存储程序,它会自动执行或发射当一些事件发生.触发器,事实上,写入响应于以下任一事件将被执行: 数据库操作(DML)语句(DELETE,INSERT,UPDATE或) 数据库 ...
- SQL记录-PLSQL函数
PL/SQL函数 PL/SQL函数与过程相同,不同之处在于函数有一个返回值.因此,前面的章节中的所有讨论都适用于函数. 创建函数 建立一个独立函数可以使用CREATE FUNCTION语句创建.CRE ...
随机推荐
- ElasticSearch入门 第四篇:使用C#添加和更新文档
这是ElasticSearch 2.4 版本系列的第四篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- mysql基础(三)——中级查询
创建表 CREATE TABLE DEPT( DEPTNO ) PRIMARY KEY, DNAME ) , LOC ) ) ; ,'ACCOUNTING','NEW YORK'); ,'RESEAR ...
- FME Cloud 账号申请流程
第一步,访问SAFE的FME Cloud注册页,官网明确表态,如果你是一个新的FME Cloud用户,你可以免费获得一个初级版.地址:https://console.fmecloud.safe.com ...
- 作业五:分析system_call中断处理过程
分析system_call中断处理过程 一.MesuSO增加getpid和getpid-asm 二.使用GDB跟踪系统调用内核函数sys_getpid 分析system_call中断处理过程 使用gd ...
- 审评(HelloWorld团队)
炸弹人:我觉得炸弹人的构想很不错,很像以前玩的qq堂,不过上课时讲的不够深入,我没有找到项目的思路,项目的介绍也很粗糙,后面说的目标很大,希望你可以实现,我觉得越多的功能,就意味着越多的工作量,总的来 ...
- 剑指offer:从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 实际就是二叉树的中序遍历问题.之前在leetcode刷过类似题目. 利用队列完成即可. 代码: /* struct Tr ...
- Daily Scrum 10.21
然后由于服务器端有变化,另外具体IDE已经确定,接下来对已经分配下去的任务做些细节补充: 10.20日晚所有人必须完成AS的配置,统一版本为1.3.2,安卓版本为4.4.0,可视化界面手机为Nexus ...
- ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(二)
ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(二) 本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户. (二)nvidia docker配 ...
- 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路
做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...
- 基于Vue-cli 快速搭建项目
Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...