先创建一个包
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, --一页显示记录数
pageNow in number,
myrows out number, --记录总数
myPageCount out number,--总页数
p_cursor out testpackage.test_cursor --返回的记录集
) is
--定义部分
--定义sql语句 字符串
v_sql varchar2(1000)--也可以设置更大,不过一般1000的长度足矣
--定义两个整数
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSize;
begin
--执行部分
v_sql:='select * from (select t1.*,rownum rn from (select * from
'|| tableName
||') t1 where rownum<='|| v_end||') where
rn>='||v_begin;
--把游标和sql关联
open p_sursor for v_sql;
--技术myrows和myPageCount
--组织一个sql
v_sql:='select count(*) from '||tableName;
--执行sql,并把返回的值赋给myrows;
execute immediate v_sql into myrows;
--计算myPageCount
if mod(myrows,pageSize)=0 then
myPageCount=myrows/pageSize;
else
myPageCount=myrows/pageSize+1;
end if;
--关闭游标
--close p_cursor;
end;