oracle在pl/sql中如何调用分页程序返回的sys_refcursor

在查找oracle分页程序时找到这位高手写的一个程序https://blog.csdn.net/fhl13017599952/article/details/80278626,发现只有mybatis的调用,没有oracle自身的调用,于是摸索了一下解决了,代码如下:

declare
  p_sql   varchar2(300):='select e.empno,d.dname from scott.emp e,scott.dept d where e.deptno=d.deptno order by empno';
  p1              number := 1;--当前页
  p2              number := 5;--每页显示记录的条数
  v_totalRecords  NUMBER; --总记录数
  v_totalPages    NUMBER; -- 总页数
  type test is record(
  v_empno scott.emp.empno%type,  --emp表
  v_deptno scott.dept.dname%type,--dept表
  r number  --ROWNUM这个不能漏了,否则会报ORA-00932,因为分页程序里面有rownum
  );--这里可以把多表查询当成一个临时表的思路来看
  v_test test;--
  outData sys_refcursor;  -- 输出结果集游标
begin
  P_TEST_PAGING_QUERY(p_sql,
                      p1,
                      p2,
                      v_totalRecords,
                      v_totalPages,
                      outData);
  dbms_output.put_line(p1);
  dbms_output.put_line(p2);
  dbms_output.put_line(v_totalRecords);
  dbms_output.put_line(v_totalPages);

  loop 
  fetch outData into   v_test;
  exit when outData%notfound;
  dbms_output.put_line(v_test.v_empno||' NO'||v_test.r);
  end loop;
  close outData;  
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值