Oracle游标

Oracle游标分为静态游标与REF游标。静态游标在编译时就知道SELECT语句的游标,而REF游标是运行时才确定SELECT语句,本文暂时只讨论静态游标,静态游标又分为:隐式游标和显示游标。

 

测试数据:

select * from test;

id          info

----------------------

1           测试数据1

2           测试数据2

3           测试数据3

4           测试数据4

5           测试数据5

6           测试数据6

7           测试数据7

8           测试数据8

9           测试数据9

10         测试数据10

11         测试数据11

12         测试数据12

13         测试数据13

 

1、隐式游标

 用来返回DML语句的信息,其属性有:

%FOUND              --DML语句影响一行或多行的时候返回TRUE

%NOTFOUND        --与%FOUND相反

%ROWCOUNT      --受影响行数

%ISOPEN             --游标是否打开

 

使用示例:

begin
update test set info='测试数据aaa' where id=110;
IF sql%FOUND then
 dbms_output.put_line('表已经更新');
else
 dbms_output.put_line('表没有被更新'); 
end if;
end;

/

 

2、显示游标

使用显示游标的步骤:
1)声明游标

2)打开游标

3)从游标中取记录

4)关闭游标

 

使用示例:

declare
my_info test.info%TYPE;       --使用test.info这一列的类型定义一个变量my_info存放游标遍历出的值
cursor my_cur is                    --声明游标
select info from test where id>10;
begin
open my_cur;                       --打开游标
LOOP
 fetch my_cur into my_info;  --从游标里获取记录
 exit when my_cur%notfound;    --如果没有记录了就退出循环
 DBMS_output.put_line(my_cur%ROWCOUNT || '.信息:'||my_info);
end LOOP;
close my_cur;              --关闭游标
end;
/

 

以上只能查询其中一列

如果要查询表里的所有列的值需要使用循环游标

 

循环游标自动打开、提取和关闭游标

使用示例:

declare
CURSOR my_cur IS
select * from test where id>10;
begin
FOR per_rec IN my_cur    --可以使用per_rec取每一列的值
loop
 DBMS_OUTPUT.PUT_LINE(per_rec.id || '----' ||per_rec.info);

end loop;
end;

 

------------------------------------------------------------------------------聂

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值