使用循环应考虑的因素

1. 循环什么时候结束

2. 什么时候测试是否该结束循环

3. 采用这种循环的原因

1. 普通循环(简单循环)

使用场合, 不能确定循环执行多少次, 要求循环至少执行一次.

另外, 退出循环时, 可以使用如下两种方式:

EXIT;  // 直接退出

EXIT WHEN condition  // 有条件退出

2. for 循环

使用场合,只有有限次数循环, 又不想过早的退出循环.

使用循环规则:

  • 不要声明循环索引, 例如下例中的 l_current_year, plsql会自动的用一个integer类型的局部变量作为循环索引》
  • 在范围部分使用表达式(包括下边界和上边界)会在循环开始时被求值一次, 范围部分不会随着循环的反复执行被重复求值,如果在循环体内部改变了范围表达式使用的变量, 这种改变对范围边界没有任何作用
  • 在循环体内部不要改变索引值或者范围边界值, 这是非常不好的编程习惯.
  • 使用 reverse 关键字可以迫使循环从上边界到下边界递减式进行, 你必须确保范围是 (lowest number .. highest number) 这个顺序不能颠倒

如果你想处理非平滑增长的 for 循环, 例如步长是2, 那么你就要在循环体内判断, 而不是改变循环索引的值, 例如你可以判断偶数时执行, 这样, 就跟步长是 2 是一个效果.

3. while 循环

使用场合, 事先无法知道循环多少次, 想通过条件来终止循环, 循环体不是必须要执行.

与普通循环的区别是, 普通循环至少要执行一次循环体.

4. 游标型 for 循环

基本用法是 for record in {cursor_name | (explicit select statement)}

loop

executable statement(s)

end loop;

使用这种循环的原因, 类似 linux 中的 awk. 当要依次取出一个游标中的每一行记录并处理时, 也可能是分析每条记录的某个字段, 此时, 就使用游标for循环.

循环中可以使用标签 <<>>

可以使用标签来指定变量是在那层循环.

11g 以后可以使用 continue 语句

循环尽量做到 “one way in, one way out”

pl/sql programming 05 循环迭代处理的更多相关文章

  1. Oracle PL/SQL中的循环处理(sql for循环)

    今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...

  2. Oracle PL/SQL之LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  3. pl/sql programming 03 语言基础

    PL/SQL 块结构 最小的有意义的代码单元叫做 块(block). 一个块是一组代码, 这个块给出了执行边界, 也为变量声明和异常处理提供了作用范围, pl/sql 准许我们创建匿名块和命名块, 命 ...

  4. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  5. [转载]Oracle PL/SQL之LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  6. pl/sql programming 15 数据提取

    数据提取 -- 游标 游标只是一个指向某个结果集的指针. 声明游标: cursor employee_cur IS select * from employees; 打开游标: open employ ...

  7. pl/sql programming 06 异常处理

    如果 PLSQL发生了错误, 无论是系统错误还是应用错误, 都会抛出一个异常, 当前 PL/SQL 块中执行单元会暂停处理, 如果当前块有一个异常处理单元的话, 控制会转移到当前块的异常处理单元来处理 ...

  8. pl/sql programming 02 创建并运行plsql代码

    /* * chap 02 * ------------------------------------------------- */ create or replace function wordc ...

  9. oracle pl/sql中的循环及if语句

    for循环 /* for循环打印1到10 */ set serveroutput on; declare begin .. loop dbms_output.put_line(i); end loop ...

随机推荐

  1. How Big Is A Petabyte, Exabyte, Zettabyte, Or A Yottabyte?

    一个关于Byte递增的描述,蛮有趣的! Bytes -> Kilobyte -> Megabyte -> Gigabyte -> Terabyte -> Petabyte ...

  2. 用DIV+CSS切割多背景合并图片 CSS Sprites 技术

    很久之前就在互联网网站和一些js插件中见过这种技术的应用,当时觉得很麻烦,就没有用,也没有去深究. 近段时间一直在做前台的一些东西,涉及到很多div+css的问题.这个东东我又碰到了,所以我花了点时间 ...

  3. CSS绝对定位和相对定位 position: absolute/relative

    absolute(绝对定位): 会把对象拖离HTML文档流,并通过top, left, right, bottom确定对象的具体位置,这个四个位置属性至少要设置一个,否则无法激活对象的absolute ...

  4. 电信SDK Pay函数里面System.out.print 无输出消息

    private void Pay(HashMap<String, String> payParams){ System.out.print("----------Pay Dian ...

  5. Linux 双线策略路由的三种实现方式总结+端口映射

    Linux 双线策略路由的三种实现方式总结+端口映射 Linux 双线策略路由的三种实现方式总结+端口映射 网络环境 服务器(网关): eth0 为LAN口,IP为 LAN_IP = 192.168. ...

  6. 设计模式之Builder模式

    一.感性认识 二.Builder模式 1.定义 一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.即构建过程相同,但是子部件却不相同. 2.结构说明 Builder: 创建者接口 ...

  7. dom对象详解--document对象(二)

       dom对象详解--style对象 style对象 style对象和document对象下的集合对象styleSheets有关系,styleSheets是文档中所有style对象的集合,这里讲解的 ...

  8. JavaScript基础(一)

    我是一个初学者,但求能学到些许知识!以下是根据韩顺平老师的<轻松搞定网页设计html+css+javascript—javascrip部分>整理而成. 为什么要学习javascript? ...

  9. (一)初探HTML!

    想自己动手做一个个人网站,因此,最近在自学PHP,主要看韩顺平老师的教学视频..将自己学习的点点滴滴记录在博客园,希望数月之后,自己可以熟练的运用PHP,也希望各位PHP高手们给予指点,不胜感激!! ...

  10. 收缩SQL数据库日志文件

    收缩SQL数据库日志文件 介绍具体的操作方法前,先说下我操作的实际环境和当时的状况.我的服务器是windows server 2008 R2 64位英文版,数据库是SQL server 2008英文版 ...