分页控件
使用存储过程的分页控件可以设置最大页数为多少页  ,如果要强制使用索引
,请在查询字段里面增加/*+ index(tablename,indexname)*/

ProcedurePager需要下面一个存储过程

create or replace package ProcedurePager is

  Type my_Cursor Is Ref Cursor;

  --用户日报表
Procedure Per_QuickPage
  (
  TbName         in   varchar2,     --表名
  FieldStr       in   varchar2,     --字段集
  RowFilter      in   varchar2,     --过滤条件
  SortStr        in   varchar2,     --排序集
  Pagesize in   number,     --分页大小
  currentindex in number,
  TotalCount     out  number, --总记录数
  MaxPageSize in number,     
  returncur  out  my_Cursor      --返回的游标
  );

 


end ProcedurePager;
/**/
create or replace package body ProcedurePager is
 Procedure Per_QuickPage
  (
  TbName         in   varchar2,           --表  名
  FieldStr       in   varchar2,               --字段集
  RowFilter      in   varchar2,             --过滤条件
  SortStr        in   varchar2,                --排序集
  Pagesize in   number,     --分页大小
  Currentindex in number,
  TotalCount     out  number,--总记录数
  MaxPageSize in number,--最大返回记录数
       
  Returncur  out  my_Cursor      --返回的游标
  )
  is
  v_SourceTb1    varchar2(3000);      --动态表名1
  v_SourceTb2    varchar2(3000);      --动态表名1
  --v_TotalCount   integer;           --总记录数
  v_sql          varchar2(3000);
  v_index        number;     --动态sql
  --maxpagesize number :=300;
  begin
   v_index:=Currentindex;
  if(v_index>maxpagesize) then
   v_index:=maxpagesize;
  end if;
  --Dbms_Output.put_line(v_index);
  --Dbms_Output.put_line(PageSize);
  --P2p_Packages.My_PutLine(to_char(v_index));
 -- P2p_Packages.My_PutLine(to_char(PageSize));
  v_SourceTb1 := 'select rownum 编号,'|| FieldStr ||' from '|| TbName ||' where '||RowFilter;
  v_SourceTb2 := v_SourceTb1||' and rownum<= '||(v_index*Pagesize)||' '||SortStr;
  v_sql       := 'select count(*) as TotalCount from ('|| v_SourceTb1||') a';
 -- P2p_Packages.My_PutLine(v_sql,255,true);
 execute immediate v_sql into TotalCount;
  --TotalCount:=v_TotalCount;

 
  while(TotalCount<=Pagesize*(v_index-1)) loop

          v_index:=v_index-1;

  end loop;
  if(v_index<1) then
     v_index:=1;
  end if;
 
  v_sql := 'select b.* from ('|| v_SourceTb2 ||') b  where 编号 >'||(v_index-1)*Pagesize;
    --P2p_Packages.My_PutLine(v_sql,255,true);
  open Returncur for v_sql;
  end Per_QuickPage;
END ProcedurePager;