Oracle的游标使用小结
最近工作中常常需要使用游标,一般在循环或者需要一条条操作数据的场景下使用。
下面总结两种常用的游标使用方法:
- FOR 循环游标
- FETCH游标
1.FOR 循环游标
- 定义游标
- 定义游标变量
- 使用for循环来使用这个游标
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量v_row c_job%ROWTYPE ,该类型为游标c_job中的一行数据类型
v_row c_job%rowtype;
begin
for v_row in c_job loop
dbms_output.put_line(v_row.empno||'-'||v_row.ename||'-'||v_row.job||'-'||v_row.sal);
end loop;
end;
/
2.Fetch游标
- 注意:使用的时候必须要明确的打开和关闭
declare
--类型定义
cursor c_job
is
select empno,ename,job,sal
from emp
where job='MANAGER';
--定义一个游标变量
v_row c_job%rowtype;
begin
open c_job;
loop
--提取一行数据到v_row
fetch c_job into v_row;
--判读是否提取到值,没取到值就退出
--取到值c_job%notfound 是false
--取不到值c_job%notfound 是true
exit when c_job%notfound;
dbms_output.put_line(v_row.empno||'-'||v_row.ename||'-'||v_row.job||'-'||v_row.sal);
end loop;
--关闭游标
close c_job;
end;
/
其中:
-
%TYPE说明
为了使一个变量的数据类型与另一个已经定义了的变量(尤其是表的某一列)的数据类型相一致 -
%ROWTYPE说明
如果一个表有较多的列,使用%ROWTYPE来定义一个表示表中一行记录的变量。