Oracle存储过程中跳出循环的写法
注:本文来源于: 《 Oracle存储过程中跳出循环的写法 》
Oracle存储过程中跳出循环的写法
记录exit和return的用法
1:exit用来跳出循环
1 loop
2 IF V_KBP IS NULL THEN
3 EXIT;
4 END IF;
5 end loop;
2:return跳出存储过程
1 loop
2 IF V_KBP IS NULL THEN
3 return;
4 END IF;
5 end loop;
3:跳出loop 一次循环
oracle 11g已提供continue;
oracle 10g及以下,使用goto来替代,例如1 SQL> set serveroutput on;
2 SQL> declare
3 2 begin
4 3 for i in 1..10 loop
5 4 if mod(i,2)=0 then
6 5 goto next;
7 6 end if;
8 7 dbms_output.put_line(i);
9 8 <<next>>
10 9 null;
11 10 end loop;
12 11 end;
13 12 /
14 注意:<<next>>标签后的null;语句不可少,因为goto标签后必须紧接着一个执行语句
4:Oracle循环中的EXIT、RETURN、CONTINUE解密
注:本文来源于 《 Oracle循环中的EXIT、RETURN、CONTINUE解密 》
有时候编写Oracle中用游标等信息去循环处理逻辑的时候,对EXIT、RETURN、CONTINUE很容易搞混淆,网上搜了资料也不是很清楚,所以本人自己写了一小段代码测试了这三种用法。案例代码如下:
1 PROCEDURE P_TASK IS
2 BEGIN
3 FOR MY_CU IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
4 FOR MY IN (SELECT SPBH, SPMCH FROM FUCM) LOOP
5 IF MY_CU.SPBH = 'AAA' THEN
6 RETURN;
7 --exit;
8 --continue;
9 ELSIF MY.SPBH = 'BBB' THEN
10 INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('123', '123');
11 ELSE
12 INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('222', '222');
13 END IF;
14 INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('333', '333');
15 END LOOP;
16 END LOOP;
17 INSERT INTO FUCM_JG (SPBH, SPMCH) VALUES ('444', '444');
18 END P_TASK;案例测试得到结果如下(分析的结果中注意本次循环和本循环的区别。本次循环是本循环执行的这次循环):
第一种:使用RETURN的时候,直接跳出存储过程或者函数
第二种:使用EXIT的时候,跳出本循环转而执行本循环的上一级循环的下一次循环。就此案例而言MY_CU.SPBH = 'AAA'为真的时候,直接跳出MY循环转而去执行MY_CU的下一次循环
第三种:使用CONTINUE的时候,本次循环后面的代码部分不再执行,转而执行本循环的下一次循环。就此案例而言MY_CU.SPBH = 'AAA'为真的时候,后面的代码不执行,继续MY的下一次循环
————————————————————————————————————————————————————————————————————————————————————————————————
Oracle存储过程中跳出循环的写法的更多相关文章
- Oracle存储过程中异常Exception的捕捉和处理
Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...
- Oracle存储过程中异步调用的实际操作步骤
本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用 .而有些相关的业务逻辑 ...
- ORACLE存储过程中%TYPE和%ROWTYPE的区别
ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个 ...
- java 实现往oracle存储过程中传递array数组类型的参数
注:本文来源于 < java 实现往oracle存储过程中传递array数组类型的参数 >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...
- oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题
oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题 学习了:http://blog.csdn.net/royzhang7/article/deta ...
- oracle存储过程中%type的含义
转: oracle存储过程中%type的含义 2018-11-07 11:43:56 lizhi_ma 阅读数 1361更多 分类专栏: 数据库 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- 在ORACLE存储过程中创建临时表
在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...
- ORACLE 存储过程中保存用户自定义异常信息的一种方式
1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, ...
- Oracle存储过程中使用临时表
一.Oracle临时表知识 在Oracle中,临时表分为SESSION.TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION:而 TRANSA ...
随机推荐
- MeEclipse搭建SSH框架之———大体框架
必备:MyEclipse软件,SSH需要的jar包,数据库,连接数据库的驱动jar包 先搭建大体框架,再加别的东西,要不都不知道哪里错了 一.新建web项目 MyEclipse左边右键--->N ...
- sap部署
SAP部署 连接sap系统需要通过sap javaconnect来连接,对于sapjco.jar系列文件有32位与64位之分.即对jdk有严格要求.现说明客户端部署及服务端部署两种情况: 一. 部署客 ...
- Django REST framework 第六章 ViewSets & Routers
REST framework包含了一个可以处理ViewSets的抽象, 它允许开发人员专注于API的状态跟交互进行建模,并使得URL构建结构基于通用的约定自动处理. ViewSet类跟View类几乎相 ...
- 【tmos】SpringBoot登录拦截
我的代码 public class WebLoginInterceptor implements HandlerInterceptor { @Autowired private WeixinConfi ...
- include指令和<jsp:include>动作标识区别:--不明觉厉 先收藏
<jsp:include> 会通过转发的形式,分别编译被包含的文件,所以不怕重命名:而 include 是将多个被包含的原封不动合并后再一起编译一次,所以不可以重命名. ========= ...
- android gradle tools 3.X中dependencies, implementation和compile区别
在3.0版本中,compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implement 和api,这两个都可以进行依赖添加,但是有什么区别呢? api 指令 完全等同于compile指令 ...
- MatrixBG 代码瀑布的实现
黑客帝国中代码瀑布是怎么实现的呢? 我们可以通过 window.innerWidth获取屏幕的宽度W,并规定字符的大小size,那么屏幕中共有 W/size 列字符出现, 我们不断的去更改每一列中文字 ...
- 20165337岳源 第四次实验 Android开发
1.实验要求: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章 参考http://www.cnblogs.com ...
- 论文笔记系列-Speeding Up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves
I. 背景介绍 1. 学习曲线(Learning Curve) 我们都知道在手工调试模型的参数的时候,我们并不会每次都等到模型迭代完后再修改超参数,而是待模型训练了一定的epoch次数后,通过观察学习 ...
- 基于html + css 实现图片瀑布流
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...