-------------------------
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
------------------------------------------------
create or replace procedure fenye
(tableName in varchar2,
Pagesize in number, --一页显示记录数
pageNum in number, --当前显示第几页
myrows out number, --总记录数
myPageCount out number, --总页数
p_cursor out testpackage.test_cursor --游标
) is
--定义部分
mysql varchar2(1000);
beginIndex number:= (pageNum-1)*Pagesize+1;
endIndex number := pageNum * Pagesize;
begin
--执行部分
mysql := 'select * from (select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||
endIndex||') where rn>='||beginIndex;
--把游标和sql关联
open p_cursor for mysql;
--计算机myrows和myPageCount
--组织一个sql
mysql := 'select count(*) from '|| tableName;
--执行sql,把返回值赋值给myrows;
execute immediate mysql into myrows;
--计算myPageCount
if mod(myrows,Pagesize) =0 then
myPageCount:= myrows /pageSize;
else
myPageCount:= myrows/pageSize+1;
end if;
--关闭游标
--close p_cursor;
end;
----调用
DECLARE
myrows number; --总记录数
myPageCount number; --总页数
p_cursor testpackage.test_cursor; --游标
BEGIN
fenye('emp',3,1,myrows,myPageCount,p_cursor);
END;