代码段接收并遍历返回值为动态游标的方法

  1. 通过方法返回动态游标
  2. 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;

record与table的区别

ORACLE中RECORD、VARRAY、TABLE的使用详解(转)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值