Oracle PL/SQL 程序设计读书笔记 - 第5章 用循环进行迭代处理
2011-11-10 23:27
405 查看
Oracle PL/SQL 程序设计读书笔记 - 第5章 用循环进行迭代处理
结束条件:简单循环是依赖于循环体内的EXIT语句的执行结束整个循环的,如果EXIT语句不执行,那么简单循环就成了一个无穷循环了。
condition是个布尔表达式。
REPEAT UNTIL循环要求在循环体执行完毕后才测试条件,这种循环保证循环体部分至少会执行一次。
每次循环体执行之前,条件都要被检查。如果结果是TRUE,循环体才会执行,如果结果是FALSE或者NULL,循环终止。 WHILE循环有可能一次都不执行。
循环结束:数值型的FOR循环只要达到了范围区间指定的次数,就会无条件结束。当然也可以使用EXIT语句终止循环,当不推荐使用这种方法。
在范围部分使用的表达式(包括在下边界和上边界)会在循环开始时被求值一次。范围部分不会随着循环的反复执行被重复求值,如果在循环体内部改变了范围表达式使用的变量,这种改变对于范围边界没有使用作用。
使用REVERSE关键字可以迫使循环从上边界到下边界递减式进行。你必须确保范围声明部分的第一个值要小于第二个值。如果使用了REVERSE关键字,就不要再颠倒这两个值的顺序。
结束条件:当游标中的所有记录都取出后,游标型FOR循环就会无条件终止,你也可以使用EXIT语句来终止循环,但并不推荐这么做。
使用循环的标签可以很明确的把循环的开头和结束绑定在一起。
你可以通过使用标签让循环的索引变量命名更规范化。比如label_b.xxx
可以通过在循环体内的EXIT语句之后跟上一个外层循环的标签,从而终止这个被指定的外层循环的执行。
也可以通过CONITINUE结束内层循环,紧接着继续外层循环体的下一次迭代。要实现这个目的,你需要使用标签给循环命名。
Oracle PL/SQL 程序设计读书笔记 - 第5章 用循环进行迭代处理
5.2 简单循环
LOOP executable statement(s) END LOOP;
结束条件:简单循环是依赖于循环体内的EXIT语句的执行结束整个循环的,如果EXIT语句不执行,那么简单循环就成了一个无穷循环了。
5.2.1 终止简单循环:EXIT和EXIT WHEN
语法:EXIT; EXIT WHEN codition;
condition是个布尔表达式。
5.2.2 模仿一个REPEAT UNTIL循环
LOOP ... body of loop ... EXIT WHEN boolean_codition; END LOOP;
REPEAT UNTIL循环要求在循环体执行完毕后才测试条件,这种循环保证循环体部分至少会执行一次。
5.2.3 人为的无限循环
LOOP data_gathering_procedure; DBMS_LOCK.sleep(10); END LOOP;
5.3 WHILE循环
WHILE condition
LOOP executable statement(s) END LOOP;
每次循环体执行之前,条件都要被检查。如果结果是TRUE,循环体才会执行,如果结果是FALSE或者NULL,循环终止。 WHILE循环有可能一次都不执行。
5.4 数值型的FOR循环
FOR loop index IN [REVERSE] lowest number .. highest number LOOP executable statements(s) END LOOP;
循环结束:数值型的FOR循环只要达到了范围区间指定的次数,就会无条件结束。当然也可以使用EXIT语句终止循环,当不推荐使用这种方法。
5.4.1 使用数值型FOR循环的规则
不要声明循环索引,PL/SQL会自动的,隐式的用一个INTEGER类型的局部变量作为循环索引。该变量的作用范围是循环本身,不能在循环之外在引用这个索引。在范围部分使用的表达式(包括在下边界和上边界)会在循环开始时被求值一次。范围部分不会随着循环的反复执行被重复求值,如果在循环体内部改变了范围表达式使用的变量,这种改变对于范围边界没有使用作用。
使用REVERSE关键字可以迫使循环从上边界到下边界递减式进行。你必须确保范围声明部分的第一个值要小于第二个值。如果使用了REVERSE关键字,就不要再颠倒这两个值的顺序。
5.5 游标FOR循环
FOR record IN { cursor_name |(explicit SELECT statement)} LOOP executable statement(s) END LOOP
结束条件:当游标中的所有记录都取出后,游标型FOR循环就会无条件终止,你也可以使用EXIT语句来终止循环,但并不推荐这么做。
5.6 循环的标签
<<label_a>> FOR loop index IN [REVERSE] lowest number .. highest number LOOP <<label_b>> FOR loop index IN [REVERSE] lowest number .. highest number LOOP executable statements(s) END LOOP label_b; END LOOP label_a;
使用循环的标签可以很明确的把循环的开头和结束绑定在一起。
你可以通过使用标签让循环的索引变量命名更规范化。比如label_b.xxx
可以通过在循环体内的EXIT语句之后跟上一个外层循环的标签,从而终止这个被指定的外层循环的执行。
5.7 CONTINUE语句
Oracle数据库11g为循环提供了一个新特性:Continue语句。使用这个语句可以从循环的本次迭代退出,紧接发着立即进入下一次迭代。形式:CONTINUE CONTINUE WHEN
也可以通过CONITINUE结束内层循环,紧接着继续外层循环体的下一次迭代。要实现这个目的,你需要使用标签给循环命名。
CONTINUE 外层循环的标签名
相关文章推荐
- Oracle PL/SQL中的循环处理(sql for循环)
- Oracle PL/SQL 程序设计读书笔记 - 第6章 异常处理
- Oracle PL/SQL中的循环处理(sql for循环)
- pl/sql programming 05 循环迭代处理
- 《oracle pl/sql programming》 第四章 条件与顺序控制 第五章 迭代与循环
- Oracle PL/SQL中的循环处理(sql for循环)
- Oracle PL/SQL中的循环处理(sql for循环)
- Oracle PL/SQL中的循环处理(sql for循环)
- oracle--循环PL/SQL--demo1---
- Oracle笔记 七、PL/SQL 异常处理
- Oracle PL/SQL处理CLOB字段的经验
- 对Sql进行类似For循环处理
- PL/SQL Oracle 用sql query查询,中文字段内容显示异常的处理
- Oracle PL/SQL 程序设计读书笔记 - 第4章 条件和顺序控制
- oracle PL/SQL进行 建表、存储过程、序列、存储过程调用、Job
- 【Oracle】PL/SQL——异常错误处理
- PL/SQL 连接oracle时 ORA-12154: TNS:could not resolve the connect identifier specified 的错误处理方法
- Oracle PL/SQL语言初级教程之异常处理
- ORACLE PL/SQL编程之五:异常错误处理
- 2012年1月5日 星期四 (oracle读书笔记,PL/SQL异常错误处理)