PL/SQL-->游标
一、游标的相关概念及特性
1.定义
映射在结果集中某一行数据的具体位置,类似于C语言中的指针。即通过游标方式定位到结果集中某个特定的行,然后根据业务需求对该行进行相应特定的操作。
2.游标的分类
显式游标:即用户自定义游标,专门用于处理select语句返回的多行数据
隐式游标:系统自动定义的游标,记录集只有单行数据,用于处理select into 和DML语句
3.游标使用的一般过程:
显式游标:声明, 打开, 读取, 关闭
隐式游标:直接使用读取,声明、打开、关闭都是系统自动进行的
4.显式游标的过程描述
a.声明游标
CURSOR cursor_name IS select_statement
如:CURSOR emp_cur IS SELECT empno,ename,job,sal FROM
scott.emp;
b.打开游标
OPEN
cursor_name
--打开游标则执行对应的select语句,将对应的结果集存放到游标当中
如:OPEN emp_cur
c.读取数据
FETCH cursor_name INTO var_name1,...var_name2
; --提取单行数据,需要配合循环语句来使用
FETCH cursor_name BULK COLLECT INTO collect1,collect2,...[LIMIT
rows];
--提取多行数据,collect为集合变量
d.关闭游标
CLOSE cursor_name
5.显式游标的4个属性
cursor_name%ISOPEN
游标是否打开
cursor_name%FOUND
最近的FETCH是否提取到数据
cursor_name%NOTFOUND
最近的FETCH是否没有提取到数据
cursor_name%ROWCOUNT
返回到目前为止,已经从游标缓冲区中提取到数据的行数
二、显式游标应用示例
--例:浏览数据,输入职位,查看每个人工资(使用fetch cursor_name into来提取单行记录)
scott@ORCL> get /u01/bk/scripts/emp_cur1.sql
1 DECLARE
2