注:本文来源于: 《  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存储过程中跳出循环的写法的更多相关文章

  1. Oracle存储过程中异常Exception的捕捉和处理

    Oracle存储过程中异常的捕捉和处理 CREATE OR REPLACE Procedure Proc_error_process ( v_IN in Varchar2, v_OUT Out Var ...

  2. Oracle存储过程中异步调用的实际操作步骤

    本文标签:Oracle存储过程 我们都知道在Oracle数据库的实际应用的过程中,我们经常把相关的业务处理逻辑,放在Oracle存储过程中,客户端以通过ADO来进行相关的调用  .而有些相关的业务逻辑 ...

  3. ORACLE存储过程中%TYPE和%ROWTYPE的区别

    ORACLE存储过程中%TYPE和%ROWTYPE的区别 在存储过程中%TYPE和%ROWTYPE常用来在PL/SQL中定义变量 因为 t_emp emp%rowtype ;这个语句的意思是 定义一个 ...

  4. java 实现往oracle存储过程中传递array数组类型的参数

    注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...

  5. oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题

    oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题 学习了:http://blog.csdn.net/royzhang7/article/deta ...

  6. oracle存储过程中%type的含义

    转: oracle存储过程中%type的含义 2018-11-07 11:43:56 lizhi_ma 阅读数 1361更多 分类专栏: 数据库   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  7. 在ORACLE存储过程中创建临时表

    在ORACLE存储过程中创建临时表 存储过程里不能直接使用DDL语句,所以只能使用动态SQL语句来执行 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截 ...

  8. ORACLE 存储过程中保存用户自定义异常信息的一种方式

    1.创建错误日志表: create table REP_LOGS ( log_s_no NUMBER not null, log_date DATE default sysdate not null, ...

  9. Oracle存储过程中使用临时表

    一.Oracle临时表知识 在Oracle中,临时表分为SESSION.TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION:而 TRANSA ...

随机推荐

  1. MeEclipse搭建SSH框架之———大体框架

    必备:MyEclipse软件,SSH需要的jar包,数据库,连接数据库的驱动jar包 先搭建大体框架,再加别的东西,要不都不知道哪里错了 一.新建web项目 MyEclipse左边右键--->N ...

  2. sap部署

    SAP部署 连接sap系统需要通过sap javaconnect来连接,对于sapjco.jar系列文件有32位与64位之分.即对jdk有严格要求.现说明客户端部署及服务端部署两种情况: 一. 部署客 ...

  3. Django REST framework 第六章 ViewSets & Routers

    REST framework包含了一个可以处理ViewSets的抽象, 它允许开发人员专注于API的状态跟交互进行建模,并使得URL构建结构基于通用的约定自动处理. ViewSet类跟View类几乎相 ...

  4. 【tmos】SpringBoot登录拦截

    我的代码 public class WebLoginInterceptor implements HandlerInterceptor { @Autowired private WeixinConfi ...

  5. include指令和<jsp:include>动作标识区别:--不明觉厉 先收藏

    <jsp:include> 会通过转发的形式,分别编译被包含的文件,所以不怕重命名:而 include 是将多个被包含的原封不动合并后再一起编译一次,所以不可以重命名. ========= ...

  6. android gradle tools 3.X中dependencies, implementation和compile区别

    在3.0版本中,compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implement 和api,这两个都可以进行依赖添加,但是有什么区别呢? api 指令 完全等同于compile指令 ...

  7. MatrixBG 代码瀑布的实现

    黑客帝国中代码瀑布是怎么实现的呢? 我们可以通过 window.innerWidth获取屏幕的宽度W,并规定字符的大小size,那么屏幕中共有 W/size 列字符出现, 我们不断的去更改每一列中文字 ...

  8. 20165337岳源 第四次实验 Android开发

    1.实验要求: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章 参考http://www.cnblogs.com ...

  9. 论文笔记系列-Speeding Up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves

    I. 背景介绍 1. 学习曲线(Learning Curve) 我们都知道在手工调试模型的参数的时候,我们并不会每次都等到模型迭代完后再修改超参数,而是待模型训练了一定的epoch次数后,通过观察学习 ...

  10. 基于html + css 实现图片瀑布流

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...