游标:游标是指向结果集合行的一个标示
1,,游标的属性:
%found判断是否发现行,发现返回true
%notfount判断是否发现行,没有发现返回true
%count返回游标指向集合的行数
%isopen判断游标是否打开,打开返回true
%rowtype返回游标所指向结果集合的行中的字段类型对象
2,声明一个游标
cursor 游标名(参数1,参数2) is
select eno,ename from emp where...;--游标所指向的结果集合
--该游标专指向这个集合的某一行,从0开始,结果集合行从1开始
--从英语的角度理解游标,声明游标的语句可以翻译为
"游标xxx是查询xx表中的xx,xx,xx字段的"
3,创建游标变量
游标变量用于接收游标在指向结果集合中的行的字段内容。
所以游标变量的类型一定要和查询出来的集合中的字段类型要一一对应
i,和普通的变量声明方式一样
c_no number;
c_name varchar2(20);
ii,直接指定行
游标变量名 游标名%rowtype;
--因为游标已经指向了一个结果集合,所以可以拿到结果集合行中的字段的数据类型
使用时,可以使用游标变量名.字段名的方式。
4,游标的移动
fetch 游标名 into 字段名1,字段名2;
--fetch命令是将游标往下移一行并行中的字段内容一一复制给游给定的字段
5,遍历游标所指向的集合
i,第一种方式
--打开游标,如果没有打开则打开
if 游标名%isopen = false then
open 游标名;
--先进入循环,后判断游标是否指向空行
loop
fetch 游标名 in 字段;
exit when 游标名%notfound;
--没有退出循环则执行下面的代码
dbms_output.put_line(字段1||','||字段2);
end loop;
close 游标名;
ii,第二种方式
--打开游标,如果没有打开则打开
if 游标名%isopen = false then
open 游标名;
--先移动游标后判断游标是否指向非空行
fetch 游标名 into 字段1,字段2;
while 游标名%found
loop
dbms_output.put_line(字段1||','||字段2);
fetch 游标名 into 字段1,字段2;--执行完业务代码后,将游标下移,调至循环条件进行判断
end loop;
....
close 游标名;--关闭游标
游标在应用中的作用::
在项目当中如果经常需要做查询数据,所以可以通过存储过程来实现。
而返回的就是一个游标