For循环有2种,分别是数值型FOR循环和游标型FOR循环:

1 --数值型For循环procedure loop_num_for2 (3 lowest in number,4 highest in number5 )6 isbegin7 FOR even_number in lowest .. highest --升序 loop8 --处理非平滑增长的索引9 if mod(even_number,2)=0

10 then11 dbms_output.put_line('now number:' ||even_number);12 end if;13 end loop;14 end loop_num_for;

这种循环在开始的时候就已经知道循环的次数了,注意这里不需要声明循环索引,因为PL/SQL会自动隐式的用一个integer类型的局部变量作为它的循环索引;

如果要降序循环,必须加上reverse关键字,并且循环上边界和下边界的顺利无需改变:

FOR even_number in reverse lowest .. highest

loop

dbms_output.put_line('now number:' ||even_number);

end loop;

另外需要说明的是,数值型FOR循环中,索引总是以1为单位递增或递减,所以如果我们的循环条件并非如此理想的平滑增长,我们就必须用一些逻辑代码或者技巧来

达到我们的目的。

如果我们需要对很多行记录做处理时,就可以使用游标型FOR循环:

1 --游标型For循环procedure loop_cursor_for2 isbegin3 declare cursor userinfo_cur is select *from userinfo_table;4 begin5 FOR userinfo_rec in userinfo_cur6 loop7 dbms_output.put_line('username is:' ||userinfo_rec.user_name);8 end loop;9 end;10 end loop_cursor_for;

当游标中的所有记录都取出来后,FOR循环就会自动终止,这里不用显示OPEN、CLOSE游标,PL/SQL引擎会自动处理。

上面的循环语句都可以用EXIT 或者 EXIT WHEN来终止其循环,但最好不要这样做,因为这样可能会造成循环的逻辑出现问题,最终造成SQL代码难于跟踪和调试。

最后附上测试用的SQL:

1 create or replace packagebody LOOP_TEST_DEMO IS2 --while循环3 procedure loop_while(start_value in number, end_value in number) is4 current_value number :=start_value;5 begin6 while current_value <=end_value loop7 dbms_output.put_line('now number:' ||current_value);8 current_value := current_value + 1;9 end loop;10 end loop_while;11

12 --数值型For循环13 procedure loop_num_for(lowest in number, highest in number) is14 begin15 FOR even_number in lowest .. highest16 --升序 loop17 --dbms_output.put_line(even_number);18 --处理非平滑增长的索引19 if mod(even_number, 2) = 0then20 dbms_output.put_line('now number:' ||even_number);21 end if;22 end loop;23 --降序24 FOR even_number in reverse lowest .. highest loop25 dbms_output.put_line('now number:' ||even_number);26 end loop;27 end loop_num_for;28

29 --游标型For循环30 procedure loop_cursor_for is31 begin32 declare33 cursor userinfo_cur is34 select *from greenet_user_info;35 begin36 FOR userinfo_rec in userinfo_cur loop37 dbms_output.put_line('username is:' ||userinfo_rec.user_name);38 end loop;39 end;40 end loop_cursor_for;41

42 end LOOP_TEST_DEMO;

loop 逻辑门如何使用for_for..loop详解相关推荐

  1. 2023上半年软件设计师-试题详解与分析

    目录 前言 上午题 计算机组成原理 信息安全 计算机相关法律 软件设计 语言处理 操作系统 软件工程 软件测试 面向对象编程 程序设计语言 数据库 数据结构与算法 计算机网络 计算机专业英语 下午题 ...

  2. 我看朴灵评注阮一峰的《JavaScript 运行机制详解:再谈Event Loop》

    阮一峰和朴灵对我来说都是大牛,他们俩的书我都买过,阮老师的译作<软件随想录>和朴灵的<深入浅出node.js>.这个事情已经过了4个月了,所以我拿来讲应该也没啥问题. 这件事情 ...

  3. run loop详解

    不知道大家有没有想过这个问题,一个应用开始运行以后放在那里,如果不对它进行任何操作,这个应用就像静止了一样,不会自发的有任何动作发生,但是如果我们点击界面上的一个按钮,这个时候就会有对应的按钮响应事件 ...

  4. 11、流程控制语句详解,IF,CASE,LOOP,LEAVE, ITERATE,REPEAT,WHILE

    在存储过程和自定义函数中可以使用流程控制语句来控制程序的流程.MySQL 中流程控制语句有:IF 语句.CASE 语句.LOOP 语句.LEAVE 语句.ITERATE 语句.REPEAT 语句和 W ...

  5. Objective-C之run loop详解

    做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深层次的了解它,这样才能在使用的时候得心应手,出 ...

  6. 第七期:详解JavaScript运行机制(Event Loop)

    在浏览器中,每个渲染进程都有一个主线程,主线程非常繁忙,既要处理DOM,又要计算样式,还要处理布局,同时还需要处理JavaScript任务以及各种输入事件.此时我们就需要一个系统来统筹调度这么多不同类 ...

  7. event loop 详解

    引言 相信在面试的小伙伴可能都遇到过问关于event loop.event loop 在前端算是一个比较重要的知识点,如果你对它不是很了解,有些逻辑你可能会屡错,因为它涉及到代码的执行顺序问题,下面就 ...

  8. CUDA之nvidia-smi命令详解---gpu

    nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...

  9. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

最新文章

  1. SpringBoot实现热部署(修改class不需要重启)
  2. MySQL Connector/C++ 接口实例
  3. boost::histogram::axis::regular用法的测试程序
  4. Spring整合Mongodb,Maven的依赖,Spring配置,MongoDB的公共操作类,使用SpringMVC的Controller进行测试并返回结果的案例
  5. jdbc mysql数据类型对比 (版本: 5.1)
  6. [数组] 连续子数组的最大和 --- LeetCode53
  7. hiveserver2启动不起来_给爱车配个充电宝,70迈汽车应急启动电源,让你远离搭电小广告...
  8. 用System.Net.Mail发送邮件
  9. android手机慢,Android手机运行慢?!教你一秒“提速”50%
  10. java中强制类型转换
  11. 计算机硬件单片机,计算机硬件单片机总结报告
  12. 锅打灰太狼的jquery小游戏
  13. JavaSE 8 离线API下载
  14. 基于平滑、差分的矩形波零漂(基线漂移)消除算法(MATLAB实现,代码和数据见CSDN同名资源)
  15. 测试ocx(MFC ActiveX控件)
  16. C++新手入门学习教程
  17. CTFHub-Web-密码口令-默认口令
  18. 影像组学工作站:SCI零基础复现,三天出一个代表作
  19. Winform Windows Media Player 简易播放器
  20. OTB 数据集的跟踪结果

热门文章

  1. 计算机基础(三):srpintf()函数小结
  2. a算法和a*算法的区别_机器人路径规划算法,全局路径规划与局部路径规划究竟有哪些区别?...
  3. swagger 返回json字符串_[Swagger] Swagger Codegen 高效开发客户端对接服务端代码
  4. j循环赋予li id_《Science》子刊:超强Li-S电池诞生!硫负载量高达15mg·cm-2
  5. python多线程并发每秒6000_Python多线程并发的误区
  6. python界面颜色设置_pycharm修改界面主题颜色的方法
  7. php笔试完就让我回去了,昨晚hr给了我一个面试题,说过了就安排我面试
  8. python服务器运维书_python自动化运维书
  9. 实验方法怎么写_小学作文怎么写?“把短句变长句”等3种方法帮孩子提高作文水平!...
  10. mwt是什么意思网络用语_网络用语奶茶婊是什么意思(奶茶婊具备的3个表现)...