一.游标简介
Oracle游标是通过关键字CURSOR的来定义一组Oracle查询出来的数据集,类似数组一样,把查询的数据集存储在内存当中,然后通过游标指向其中一条记录,通过循环游标达到循环数据集的目的
二.游标的分类
1.显示游标
指的是游标使用之前必须得先声明定义,一般是对查询语句的结果事进行定义游标,然后通过打开游标循环获取结果集内的记录,或者可以根据业务需求跳出循环结束游标的获取。循环完成后,可以通过关闭游标,结果集就不能再获取了。全部操作完全由开发者自己编写完成,自己控制。
2.隐式游标
指的是PL/SQL自己管理的游标,开发者不能自己控制操作,只能获得它的属性信息。
在 PL/SQL 中使用 DML 和 select into
时,会 自动
创建隐式游标,隐式游标自动声明、打开和关闭,其名为 SQL
(无需人为关闭和开启)
三.游标常用属性
1.判断游标是否开启
SQL%ISOPEN
2.判断前一个fetch是否有值
SQL%FOUND
3.判断前一个fetch是否无值
SQL%NOTFOUND
4.当前成功执行的数据行数
SQL%ROWCOUNT
5.获取字段类型
SQL%TYPE
6.获取表所有字段类型
SQL%ROWTYPE
四.常见实例
--1.利用游标依次输出table_A表中的item_A字段
declare
--声明游标
cursor itema is
select item_a from table_a;
--声明变量
a table_a.item_a%type;
begin
--打开游标
open itema;
--循环
loop
--移动指针获取游标中值到变量
fetch itema into a;
--如果当前游标为空则结束循环
exit when itema%noufound;
--获取变量进行逻辑处理
dbms_output.put_line(a);
--循环结束
end loop;
--关闭游标
close itema;
end;
--2.利用游标依次输出table_A表中的item_A字段和item_B字段
declare
--声明游标
cursor tb_a is
select * from table_a;
--声明变量
a table_a%rowtype;
begin
--打开游标
open tb_a;
--循环
loop
--移动指针获取游标中值到变量
fetch tb_a into a;
--如果当前游标为空则结束循环
exit when tb_a%noufound;
--获取变量进行逻辑处理
dbms_output.put_line(a.item_a);
dbms_output.put_line(a.item_b);
--循环结束
end loop;
--关闭游标
close tb_a;
end;