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元

 

posted @ 2018-08-07 14:06  秋风de领域  阅读(433)  评论(0)    收藏  举报