Oracle中的游标操作

游标是Oracle系统在内存中开辟的一个工作区,在其中存放SELECT语句返回的查询结果
<1>游标操作的过程
(1) 定义游标
(2)打开游标
(3)游标的操作(移动,读取数据)
(4)关闭游标
注释:-- 游标的定义格式:cursor cusor_name is select语句
-- 游标的打开: open 游标名
-- 游标读取数据: fetch 游标名 into 变量1,变量2……(这里可以是普通变量,也可以是记录类型的变量)
-- 关闭游标: close 游标名
--游标只能向后移动,不能返回。
<2>游标操作举例
Declare
Row person%rowtype;--定义了一个记录类型的变量
Increment number(4);--定义了一个普通变量
Cursor cursor_person is select * from person; -定义游标变量
I number(2);--定义普通变量
Begin
Select count(*) into I from person;--i变量保存person表中的记录总数
Open cursor_person; ----打开游标
Loop
Fetch cursor_person into row; ----取出游标中的数据放到记录类型的变量中
If row.id=2 then
Increment:=1;
Elseif row.id=3 then
Increment:=2;
End if;
Update person set age=age+ Increment where name=row.name;
I:=i-1;
Exit when i=0;
End loop;
Close cursor_person; ----关闭游标
End;
/
注解:将表中号码是2的人年龄加1,号码是3的人年龄加2.
<3>游标的属性:
----%ISOPEN:该属性判断游标是否已经打开,若已经打开,则返回值值true,否则返回false
------%FOUND若最近一次fetch操作结果存在,那么就返回true
------%NOTFOUND同%FOUND相反
------%ROWCOUNT返回游标操作过的记录总数
上面的举例可以改写为:

Declare
Row person%rowtype;--定义了一个记录类型的变量
Increment number(4);--定义了一个普通变量
Cursor cursor_person is select * from person; -定义游标变量
Begin
Open cursor_person; ----打开游标
Loop
Fetch cursor_person into row; ----取出游标中的数据放到记录类型的变量中
Exit when cursor_person%NOTFOUND;
If row.id=2 then
Increment:=1;
Elseif row.id=3 then
Increment:=2;
End if;
Update person set age=age+ Increment where name=row.name;
End loop;
Close cursor_person; ----关闭游标
End;
/
<4>for循环在游标操作中的应用
基本格式:
For 变量名(此变量名无需定义) in 游标名 loop
循环体部分
End loop;
说明:for循环会自动的打开和关闭游标
下面是上例子在for循环中的使用情况:
Declare
Increment number(4);--定义了一个普通变量
Cursor cursor_person is select * from person; -定义游标变量
Begin
For row in cursor_person loop
If row.id=2 then
Increment:=1;
Elseif row.id=3 then
Increment:=2;
End if;
Update person set age=age+ Increment where name=row.name;
End loop; ----关闭游标
End;
/
<5>带参数的游标操作
定义的格式:
Cursor cursor_name(variable1 type, variable2 type …………….) is selectStatement
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值