一:概念
游标存放在内存而不是磁盘中,提高了数据的读取速度。游标从表中检出结果集,并每次仅指向一条进行交互处理。
二:使用场景
1.一般游标在存储过程中使用,相当于程序中对查询结果的for循环处理
2.现实中游标使用较少,游标会对行加锁,不利于多业务运行;因为游标存放在内存中,当数据量大时会造成内存不足,会拉高cpu
3.综上,游标适用于数据量较小的场景,或尽量避免使用
三:基础知识
1.静态游标:结果集已定义
①隐式游标:dml语句为隐式游标,通过游标属性或许sql信息,如:SQL%NOTFUOND
②显式游标:对查询语句建立一个游标,通过该游标属性遍历sql语句查询结果的信息
2.游标的属性
%notfound:fetch语句 判断最后一条记录 若true 则循环结束
如: fetch cor into row exit when cor%notfound;
%found: fetch语句获取记录的执行情况
%isopen:游标是否打开
%rowcount:游标当前提取的行数
四:几个简单的例子
1.存储过程 for in
cursor cor is select * from tb where ...;
row cor%rowtype;--定义一个游标变量,遍历cor里的数据
begin
for row in cor loop;
...
end loop;
end;
2.fetch游标 需要手动打开和关闭
cursor cor is select * from tb where ...;
row cor%rowtype;
begin
open cor;
loop
fetch cor into row;
exit when cor%notfound;
...
end loop;
end;
更多内容请跳转: