plsql(二)--游标

来源:互联网 发布:json转化为byte数组 编辑:程序博客网 时间:2024/06/09 20:49
游标(CURSOR)是ORACLE系统在内存中开辟的一个工作区,
在其中存放SELECT语句返回的查询集。

游标的定义
五个步骤:
1.定义获取数据的变量
2.声明游标,并指定查询
3.打开游标
4.抓取数据

5.关闭游标

经过这五个步骤的是显式游标,没有经过这5个步骤的是隐式游标(for)

游标属性
%ISOPEN:是否打开
%ROWCOUNT:行数
%FOUND:boolean值,是否还有数据
%NOTFOUND:是否已无数据

注意,显式游标使用游标名来引用。隐式游标用SQL引用。

--显式游标

--1.定义获取数据的变量

declare rowobj emp%rowtype;

--2.声明游标,并指定查询  CURSOR  游标名  IS  查询语句;

cursor mycursor is select * from emp;

begin 

--3.打开游标

open mycursor;

--4.抓取数据
loop 

fetch mycursor into rowobj;

--抓取数据后判断是否还有数据

exit when mycursor%NOTFOUND;

syso(rowobj.ename||rowobj.sal);

--5.关闭游标

close mycursor;

end;


--隐式游标

begin 

       for tmp in (select * from emp) loop 

          syso(tmp.ename || tmp.sal); 

       end loop; 

end; 


--动态游标

--1.定义获取数据的变量

declare rowobj emp%rowtype;

enameVar varchar2(20):='xxx';

sqlVar varchar2(2000):='select * from emp where 1=1';

--2.声明游标,并指定查询  CURSOR  游标名  IS  查询语句;

mycursor sys_refcursor;

begin 

if(enameVar is not null) then

--orcl中单引号的转义使用两个单引号''

sqlVar:=sqlVar||' and ename='''||enameVar||'''';

--3.打开游标

open mycursor for sqlVar;

--4.抓取数据

loop 

fetch mycursor into rowobj;

--抓取数据后判断是否还有数据

exit when mycursor%NOTFOUND;

syso(rowobj.ename||rowobj.sal);

--5.关闭游标

close mycursor;
end;
原创粉丝点击