在查找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;