分页的存储过程

分页的存储过程

create or replace package pagingPackage as
type paging_cursor is ref cursor;
end pagingPackage;

create or replace procedure pagingProcedure
(
   tableName in varchar2,
   pageSize in number,
   pageNow in number,
   rowsCount out number,
   pageCount out number,
   p_cursor out pagingPackage.paging_cursor
) 
is
v_sql varchar2(1000);
v_begin number := (pageNow - 1) * pageSize + 1;
v_end number := pageNow * pageSize;
begin
   v_sql := 'select * from ( select t.*,rownum rn from (select * from '||tableName||') t 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 rowsCount;
   if mod(rowsCount,pageSize) = 0 then
      pageCount := rowsCount/pageSize;
   else
      pageCount := rowsCount/pageSize + 1;
   end if;
   close p_cursor;
end;

 http://www.cnblogs.com/zfc2201/archive/2012/03/12/2392475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值