简介
游标是一个指向查询结果集的指针,PL/SQL有两种游标,分别是显式游标和隐式游标。
隐式游标
1.声明一个游标
在使用显式游标之前,你必须声明它。
CURSOR cursor_name IS query
OPEN cursor_name
在这句话中,cursor_name
是在声明部分所声明游标的名字。
当你打开游标,Oracle会解析查询,绑定变量并且执行所关联的SQL语句。Oracle也决定了执行计划,将变量和游标参数与SQL语句中的占位符相关联,确定结果集,并将游标设置到结果集中的第一行。
3.从游标中获取数据
FETCH cursor_name INTO variable_list
CLOSE cursor_name
关闭游标会使Oracle在适当的时机释放所占用的内存。
如果你在匿名块、存储过程或者函数中声明游标,在这些对象执行结束时游标也会自动的关闭。
5.显示游标的属性
一个游标有四个属性,你可以使用以下语法来引用他们
cursor_name%attrribute
这个属性有四个值
NULL
:在第一次获取数据之前TRUE
:一条记录成功的被获取到FALSE
:没有记录返回INVALID_CURSOR
:游标没有打开
%NOTFOUND
这个属性也有四个值
NULL
FALSE
:一条记录成功的被获取到TRUE
:没有记录返回INVALID_CURSOR
:游标没有打开
%ROWCOUNT
declare --类型定义 cursor c_job is select empno,ename,job,sal from emp where job='MANAGER'; --定义一个游标变量 c_row c_job%rowtype; begin open c_job; loop --提取一行数据到c_row fetch c_job into c_row; --判读是否提取到值,没取到值就退出 --取到值c_job%notfound 是false --取不到值c_job%notfound 是true exit when c_job%notfound; dbms_output.put_line(c_row.empno||'-'||c_row.ename||'-'||c_row.job||'-'||c_row.sal); end loop; --关闭游标 close c_job; end;
参考:https://www.oracletutorial.com/plsql-tutorial/plsql-cursor/