--先创建包package
create or replace package mypackage as
type v_cursor is ref cursor;
end mypackage;
--创建过程
create or replace procedure filterpage(
tablename in varchar2 --表名
pagesize in number --一页显示记录数
currpage in number --当前页面
totalcount out number --总记录数
pagecount out number --页数
p_cursor out mypackage.v_cursor--结果集
)
is
begin
v_sql:='select * from (select t1.*,rownum rn from '||tablename||'t1 where rownum <='||v_end||')where rn >='||v_begin;
open p_cursor for v_sql;
v_sql:='select count(*) from'||tablename;
execute immediate v_sql into totalcount;--立即执行并赋值
pagecount:=ceil(totalcount/pagesize); --向上取整(例如:5条记录,每页2条,就显示3页)