《PL/SQL 语言开发参考手册》之五:PL/SQL 游标

来源:互联网 发布:智能管家机器人软件 编辑:程序博客网 时间:2024/06/05 06:06

《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 命令执行完毕立即关闭隐式游标。

原创粉丝点击