《PL/SQL 语言开发参考手册》之五:PL/SQL 游标
《PL/SQL 语言开发参考手册》之五:PL/SQL 游标
《PL/SQL 语言开发参考手册》下载地址
1、游标(CURSOR)
游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用 fetch 语句可以移动该指针,从而对游标中的数据进行各种操作,然后将操作结果写回数据表中。
1)分类:
a)显式游标:程序员可以操作控制,是针对 select 语句的,指向 select 语句的结束集;
b)隐式游标:程序员不可控制,但可以有限制的应用;
2)作用:用于处理查询语句的结果,提取多行数据集;
3)使用步骤:
a)声明游标:
a、普通声明:
b、带参数声明明:
b)为查询打开游标:
c)从游标中取结果,存入 PL/SQL 变量中:
a、FETCH cur_emp INTO var1, var2, ...(变量名 1, 变量名 2,.......); /* 变量的数量、类型、顺序要和Table中字段一致; */
b、FETCH cur_emp INTO record_var(记录型变量名);
注:将值从 CURSOR 取出放入变量中,每 FETCH 一次取一条记录;
d)关闭游标:CLOSE cur_emp;
注:
a、游标使用后应该关闭;
b、关闭后的游标不能 FETCH 和再次 CLOSE;
c、关闭游标相当于将内存中 CURSOR 的内容清空;
2、游标的属性
游标名%属性名
1)%FOUND:是否有值;有则返回 TRUE,否则返回 FALSE;
2)%NOTFOUND:是否没有值;如果没有值则返回 TRUE,否则返回 FALSE;
3)%ISOPEN:是否是处于打开状态;处于打开状态就返回 TRUE,否则返回 FALSE;
4)%ROWCOUNT:CURSOR 当前的记录号(当前游标的指针位移量,表示在此之前,游标所处理的数据量(多少条记录));
3、游标的 FETCH 循环
1)
2)
3)
4、带参数的游标 CURSOR
5、显式游标与隐式游标
显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;
而对于非查询语句,如修改、删除操作,则由 ORACLE 系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为 SQL,这是由 ORACLE 系统定义的。
对于隐式游标的操作,如定义、打开、取值及关闭操作,都由 ORACLE 系统自动地完成,无需用户进行处理。
用户只能通过隐式游标的相关属性,来完成相应的操作。
在隐式游标的工作区中,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条 SQL 语句所包含的数据。
格式调用为: SQL%
注:INSERT,UPDATE,DELETE,SELECT 语句中不必明确定义游标。
隐式游标属性
SQL%FOUND 布尔型属性,当最近一次读记录时成功返回,则值为 true;
SQL%NOTFOUND 布尔型属性,与 %found 相反;
SQL %ROWCOUNT 数字型属性,返回已从游标中读取得记录数;
SQL %ISOPEN 布尔型属性,取值总是 FALSE。SQL 命令执行完毕立即关闭隐式游标。