Oracle的游标
游标也是一类数据库对象,但与常规的数据库对象在创建和应用时有所区别;
实际上,游标可以理解为Java集合中的“迭代器”;不是一个可以存放数据的容器,与容器相比,更加类似于“视图”;
游标用在数据库中,主要作用是用来遍历表中的部分或所有记录;
对游标的常规使用分为以下四个步骤;
1、声明游标;游标遍历哪个表的哪些列;或者哪些表的联合查询;
2、打开游标;
3、使用游标;
4、关闭游标;
Oracle中的游标与Java中的迭代器有所区别,作为迭代器,开始时指向首元素之前,遍历后,指向尾元素之后;游标打开后,指向首行记录;
declare
--1、声明游标;
cursor cc is select ename,sal from emp;
name emp.ename%type;
salary emp.sal%type;
begin
--2、打开游标;
open cc;
--3、使用游标;
fetch cc into name,salary;
show('name: '||name||',salary: '||salary);
--4、关闭游标;
close cc;
end;
/
游标的属性;
1、cursor%found;存在记录;
2、cursor%notfound;不存在记录;
3、cursor%rowcount;当前遍历到第几行;
4、cursor%isopen;是否打开;
遍历;
declare
--1、声明游标;
cursor cc is select ename,sal from emp;
name emp.ename%type;
salary emp.sal%type;
begin
--2、打开游标;
open cc;
--3、使用游标;
loop
exit when cc%notfound;
fetch cc into name,salary;
show(''||cc%rowcount);
show('name: '||name||',salary: '||salary);
end loop;
--4、关闭游标;
close cc;
end;
/
另一种使用游标遍历表的形式,用for循环,在使用for遍历时,游标不需要显式的打开和关闭;在这种情况下,我们将游标看作“数组或集合”,用一个游标变量作为“元素”来执行;
declare
--声明游标;
cursor cc is select ename,sal from emp;
begin
for c in cc loop
show('ename: '||c.ename||', sal: '||c.sal);
end loop;
end;
/
当用游标使用for循环遍历表时,将游标当作集合来用,而循环中的临时变量作为每行记录使用;
declare
--声明游标;
cursor cc is select * from emp;
begin
for c in cc loop
show(''||c.hiredate||','||c.deptno||','||c.sal);
end loop;
end;
/
版权声明:本站【趣百科】文章素材来源于网络或者用户投稿,未经许可不得用于商用,如转载保留本文链接:https://www.qubaik.com/article/86328.html