- 通过方法返回动态游标
- plsql代码段接收游标并遍历游标
1.通过方法返回动态游标
create or replace function F_A return sys_refcursor is
my_cuusor sys_refcursor;
BEGIN
OPEN my_cuusor FOR SELECT '1' TBN,2 CNT FROM DUAL UNION SELECT '3' TBN,4 CNT FROM DUAL;
return my_cuusor;
end;
2.plsql代码段接收游标并遍历游标
方法一 定义多个变量来遍历游标的多列
DECLARE
bCursor sys_refcursor;
cchar varchar2(20);
cint number(5);
begin
bCursor:= F_A();
--SELECT F_A() into bCursor FROM DUAL;这条SQL可以直接查看游标内容
--open bCursor;注意这个地方不能使用open,否则报错,原因是F_A方法中已经打开过了
--close bCursor;
loop
fetch bCursor into cchar,cint;
exit when bCursor%notfound;
dbms_output.put_line(cchar);
end loop;
close bCursor;
end;
方法二 使用record遍历游标
DECLARE
bCursor sys_refcursor;
cchar varchar2(20);
cint number(5);
type mt is record(
dchar varchar2(20),
dint number(5)
);
vmt mt;
begin
bCursor:= F_A();
--SELECT F_A() into bCursor FROM DUAL;
--open bCursor;
--close bCursor;
loop
fetch bCursor into vmt;
exit when bCursor%notfound;
dbms_output.put_line(vmt.dchar);
end loop;
close bCursor;
end;