分页的存储过程
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