码迷,mamicode.com
首页 > 数据库 > 详细

ORACLE游标循环【转】

时间:2014-09-05 18:08:51      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:os   使用   ar   for   数据   代码   sp   c   type   

 

ORACLE游标循环有几种用法,下面分别介绍一下。

首先定义游标和变量

CURSOR C1 IS SELECT  eNAME,ejob FROM emp WHERE deptno=10;

v_NAME VARCHAR2(10);

v_job VARCHAR2(10);

第一种:使用loop 循环 open c1; loop fetch c1 into v_name,v_job ; exit when c1%notfound; …… end loop colse c1; 这里需要注意,exit when语句一定要紧跟在fetch之后。必避免多余的数据处理。 而且处理逻辑需要跟在exit when之后。 循环结束后要记得关闭游标。

第二种:使用while循环。

open c1;

fetch c1 into v_name,v_job; while c1%found loop …… fetch c1 into v_name,v_job; end loop; close c1;

注意 这里用到了两个fetch语句!

第一个fetch语句是把游标的第一行记录赋值给相关变量,第二个fetch语句是让游标指向下一条记录。

如果没有第二个语句的话,即为死循环,不停地执行loop内的代码。

总之,使用while来循环处理游标是最复杂的方法。

第三种: for循环

for v_pos in c1 loop v_name:= v_pos.ename; 02. v_job:= v_pos.ejob; 03. … 04.end loop; 可见for循环是比较简单实用的方法。 首先,它会自动open和close游标。解决了你忘记打开或关闭游标的烦恼。 其它,自动定义了一个记录类型及声明该类型的变量,并自动fetch数据到这个变量中。 我们需要注意v_pos 这个变量无需要在循环外进行声明,无需要为其指定数据类型。 它应该是一个记录类型,具体的结构是由游标决定的。 这个变量的作用域仅仅是在循环体内。 把v_pos看作一个记录变量就可以了,如果要获得某一个值就像调用记录一样就可以了。 如v_pos.pos_type 由此可见,for循环是用来循环游标的最好方法。高效,简洁,安全。

ORACLE游标循环【转】

标签:os   使用   ar   for   数据   代码   sp   c   type   

原文地址:http://www.cnblogs.com/aisam/p/3958468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!