2024年5月9日发(作者:)

Oracle显式游标和隐式游标

SQL是用于访问Oracle数据库的语言,PL/SQL扩展和加强了SQL的功能,它

同时引入了更强的程序逻辑, 下面在本文中将对游标的使用进行一下讲解,希望

可以和大家共同学习进步。

游标字面理解就是游动的光标。游标是SQL的一个内存工作区,由系统或

用户以变量的形式定义。在某些情况下,需要把数据从存放在磁盘的表中调到计

算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处

理的速度才会提高,否则频繁的磁盘数据交换会降低效率。用数据库语言来描述

游标就是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结

果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例

如提取当前行的数据等。

游标有两种类型:显式游标和隐式游标。游标一旦打开,数据就从数据库中

传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处

理。

当系统使用一个隐式游标时,可以通过隐式游标的属性来了解操作的状态和

结果,进而控制程序的流程。隐式游标可以使用名字SQL来访问,但要注意,通

过SQL游标名总是只能访问前一个处理操作或单行SELECT操作的游标属性。

所以通常在刚刚执行完操作之后,立即使用SQL游标名来访问属性。游标的属

性有四种,分别是SQL %ISOPEN,SQL %FOUND,SQL %NOTFOUND,

SQL %ROWCOUNT.

SQL%ISOPEN返回的类型为布尔型,判断游标是否被打开,如果打

开%ISOPEN等于true,否则等于false,即执行过程中为真,结束后为假。

SQL%NOTFOUND返回值为布尔型,判断游标所在的行是否有效,如果有

效,则%FOUNDD等于true,否则等于false,即与%FOUND属性返回值相反。

SQL%FOUND返回值的类型为布尔型,值为TRUE代表插入 删除 更新或

单行查询操作成功。

SQL%ROWCOUNT返回值类型为整型,返回当前位置为止游标读取的记录

行数,即成功执行的数据行数. 示例代码如下:

set serveroutput on;

declare

varno varchar2(20);

varprice varchar2(20);

CURSOR mycur(vartype number) is

select emp_no,emp_zc from cus_emp_basic

where com_no = vartype;

begin

if mycur%isopen = false then

open mycur(043925);

end if;

fetch mycur into varno,varprice;

while mycur%found

loop

dbms_output。put_line(varno||’,'||varprice);

if mycur%rowcount=2 then

exit;

end if;

fetch mycur into varno,varprice;

end loop;

close mycur;

end;

记录并不保存在数据库中,它与变量一样,保存在内存空间中,在使用记录