oracle存储过程实现的分页

create or replace procedure lpmtest10(
  tablename in varchar2,
  pagenow in number,
  pagesize in number,
  totalrecord out number,
  totalpage out number,
  lpmrecordset out sys_refcursor --游标类型
)is
lpm_sql varchar2(200);
v_begin number:=(pagenow-1)*pagesize+1;
v_end number:=pagenow*pagesize;
begin
    lpm_sql:='select * from (select e.*,rownum rn from (select * from '||tablename||')e where rownum<='||v_end||') where rn>='||v_begin;
    open lpmrecordset for lpm_sql;
    
    lpm_sql:='select count(*) from '||tablename;
    execute immediate lpm_sql into totalrecord;
    
    if(mod(totalrecord,pagesize)=0) then
    totalpage:=totalrecord/pagesize;
    else 
      totalpage:=trunc(totalrecord/pagesize)+1;
    end if;
    
end;

猜你喜欢

转载自lpm528.iteye.com/blog/1560938