pl/sql programming 05 循环迭代处理
使用循环应考虑的因素
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 循环迭代处理的更多相关文章
- Oracle PL/SQL中的循环处理(sql for循环)
今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...
- Oracle PL/SQL之LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- pl/sql programming 03 语言基础
PL/SQL 块结构 最小的有意义的代码单元叫做 块(block). 一个块是一组代码, 这个块给出了执行边界, 也为变量声明和异常处理提供了作用范围, pl/sql 准许我们创建匿名块和命名块, 命 ...
- PL/SQL中LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- [转载]Oracle PL/SQL之LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
- pl/sql programming 15 数据提取
数据提取 -- 游标 游标只是一个指向某个结果集的指针. 声明游标: cursor employee_cur IS select * from employees; 打开游标: open employ ...
- pl/sql programming 06 异常处理
如果 PLSQL发生了错误, 无论是系统错误还是应用错误, 都会抛出一个异常, 当前 PL/SQL 块中执行单元会暂停处理, 如果当前块有一个异常处理单元的话, 控制会转移到当前块的异常处理单元来处理 ...
- pl/sql programming 02 创建并运行plsql代码
/* * chap 02 * ------------------------------------------------- */ create or replace function wordc ...
- oracle pl/sql中的循环及if语句
for循环 /* for循环打印1到10 */ set serveroutput on; declare begin .. loop dbms_output.put_line(i); end loop ...
随机推荐
- TestDriven.Net
转: http://www.cnblogs.com/AlexLiu/archive/2008/12/01/1345002.html
- set gameobject Icons by Script
有很多时候我们需要在编辑器查看一个Gameobject的移动,有些人采用Gizoms类,可是如果不想用,可以使用U3D内置的Icon类. 但是如果想在脚本中设置而不是通过手动选择呢? Google之, ...
- Http Url Get请求方式需要对中文参数进行编码
public static void main(String[] args) { try { String mytext = java.net.URLEncoder.encode("上海南站 ...
- MySQL各个版本区别
MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...
- 从CMO到龙泉寺弟子:佛法改变人生
今天,移动精英开发社为大家请来了佛家弟子孫濟初师兄给大家分享学佛心得.濟初师兄根据自己的亲身经历,讲述了佛法对他人生的影响,以及他所获得的启示.本文系国内ITOM管理平台OneAPM授权转载. 孫濟初 ...
- 【hadoop】有参考价值的博客整理
好文章的网址: hadoop shuffle机制中针对中间数据的排序过程详解(源代码级) Hadoop mapreduce原理学习 与 Hadoop 对比,如何看待 Spark 技术? 深入理解Had ...
- NetCore第一步:千里之行 始于环境构筑
今年的6月28号,微软发布了一个正式版本 NetCore.发布的同时,也同时发布了CoreStudio. 这个激动人心的时刻,让跨平台已经不再是什么神话. 让我们一起来开始Core的开发之旅吧. 万事 ...
- 连接池和 "Timeout expired"异常
转自:博客园宁静.致远:http://www.cnblogs.com/zhangzhu/archive/2013/10/10/3361197.html 异常信息: MySql.Data.MySqlCl ...
- Java应用发布后,需要关注的7个性能指标
在某个重大发布之后,都需要记录相应的指标,本文介绍了最重要的几个 Java 性能指标,包括响应时间和平均负载等.为理解应用程序在生产环境中如何运行,就需要遵循一些 Java 性能指标. 在以前,当软件 ...
- C++:文件的输入和输出
1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) ...