PL/SQL程序设计(四)—— 游标
在PL/SQL程序中,对于处理多行记录的事务经常使用游标来实现。
(一)游标概念
为了处理SQL语句,ORACLE必须分配一片叫上下文的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集。
游标是一个指向上下文的句柄或指针。通过游标,PL/SQL可以控制上下文区和处理语句时上下文会发生些什么事情。

(二)显式游标
1、显式游标处理需四个PL/SQL步骤:


—— 打印出 80 部门的所有的员工的工资:salary: xxx


2、显式游标属性
%FOUND 布尔值属性,当最近一次读记录时成功返回,则返回TURE
%NOTFOUND 布尔值属性,与%FOUND相反
%ISOPEN 布尔值属性,当游标已打开时返回TURE
%ROWCOUNT 数字型属性,返回已从游标中读取的记录数
3、游标的for循环

—— 打印出 80 部门的所有的员工的工资:salary: xxx(使用for循环)

—— 利用游标, 调整公司中员工的工资: 、
工资范围 调整基数
0 - 5000 5%
5000 - 10000 3%
10000 - 15000 2%
15000 - 1%

使用SQL中的decode函数

使用游标的for循环

使用带参数的游标

(三)隐式游标
现实死游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;而对于非查询语句,如修改、删除操作,择优ORACLE系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标成为隐式游标,隐式游标的名字为SQL,这是由ORACLE系统定义的。对于隐式游标的操作,如定义、打来、取值及关闭操作,都有ORACLE系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。在隐式游标的工作区中,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条SQL语句所包含的数据。
调用格式为: SQL%
1、隐式游标属性
%FOUND 布尔值属性,当最近一次读记录时成功返回,则返回TURE
%NOTFOUND 布尔值属性,与%FOUND相反
%ISOPEN 布尔值属性,取值总是FALSE。SQL命令执行完毕立即关闭隐式游标
%ROWCOUNT 数字型属性,返回已从游标中读取的记录数
—— 更新指定员工 salary(涨工资 10),如果该员工没有找到,则打印”查无此人” 信息


2、关于NO_DATA_FOUND和%NOTFOUND的区别
SELECT...INTO语句触发NO_DATA_FOUND
当一个显式游标的WHERE子句未找到时触发%NOTFOUND
当UPDATE或DELETE语句中的WHERE子句未找到时触发SQL%NOTFOUND
在提取循环中要用%NOTFOUND或%FOUND来确定循环的退出条件,不要用NO_DATA_FOUND
(四)游标修改和删除操作

—— 从employees表中查询某部门的员工情况,将其工资最小定为3000元


浙公网安备 33010602011771号