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