学习Oracle 的游标1

PL/SQL语言用游标来管理SQL的SELECT的语句,游标是为处理这些语句而分配的一大块内存,一个对表进行操作的PL/SQL语句通常可产生或处理一组记录,但是许多应用程序,尤其是PL/SQL语言嵌入到的主语言通常不能吧整个结果集作为一个单元来处理,这些应用程序需要有一种机制来保证每次处理结果集中的一行或几行,游标就提供了这种机制,

 

 游标提供了对一个结果集进行逐行处理的能力,游标可视为一种特殊的指针,他与某个查询结果相联系,可以指向结果集的任意位置,一边对指定位置的数据进行处理,使用游标可以在查询数据的同时对数据进行处理,

 

游标分两种:显示游标和隐式游标

 

 

对显示游标的使用要遵循声明游标---》打开游标---》读取数据---》关闭游标。使用隐式游标时,就不必执行上诉步骤啦,

 

 

先来学习显示游标吧!

 

(1)声明游标

 

显示游标是作为生命段的一部分进行定义的

举个例子:

declare cursor xs_cur

is

select xh,xm,cj

    from xs

    where zym = '计算机';

 

(2)打开游标

声明游标后,要使用游标从中提取数据,必须先打开游标,用open语句打开游标

举个例子吧,先定义个游标,然后打开游标,输出行数

declare cursor xs_cur

is

select xh,xm,zxf

   from xs;

begin

   open xs_cur;

  dbms_output.put_line(xs_cur%rowcount);

end;

(3)读取数据

游标打开后就可以使用fetch语句从中读取数据啦,

再来个例子;

declare

    v_xh char(6);

    v_zxf number(2);

cursor xs_cur

  is

 select xh,zxf

from xs

where zym='计算机';

begin

    open xs_cur;

   fetch xs_cur into v_xh,v_zxf;

  while xs_cur%found

     loop

              dbms_output.put_line(v_xh+v_zxf);

              fetch xs_cur into v_xh,v_zxf;

     end loop;

 close  xs_cur;

end;

 

(4)关闭游标

关闭游标用close语句

使用游标要注意的

 

(1)用%found和%notfound检验游标是否成功,根据其返回值TRUE或FALSE检查是否应该结束游标的使用。

(2)循环执行游标取数据操作时,检索出的总数据行数存放在系统变量%rowcount中。

例如

while counter<50 loop

  fetch xs_cur into v_xh,v_zxf;

   if xs_cur%rowcount<=15  then

        ...

  else

       ...

 end if;

counter:=counter+1;

end loop;

(3)游标的目标变量必须与游标select表中列的数据类型一致

(4)如果试图打开一个已经打开的游标或者关闭一个已经关闭的游标,将会出错,因此用户在打开或关闭游标前,若不清楚其状态,应该用%isopen进行检测,根据返回值为TRUE或FALSE,采取相应的动作。

例如

if  mycur%isopen  then

  fetch mycur into v_kch,v_cj;

else

   open mycur;

end if;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值