最近工作中常常需要使用游标,一般在循环或者需要一条条操作数据的场景下使用。
下面总结两种常用的游标使用方法:
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;
/
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来定义一个表示表中一行记录的变量。
原文:https://www.cnblogs.com/laiyaling/p/11889657.html