听韩老师的oracle的分页存储过程
--创建一个包,在该包中,我定义类型test_cursor,是个游标 create or replace package testpackage as type test_cursor is ref cursor; end testpackage;
--开始编写分页过程
create or replace produrce fenye --fenye (tableName in varchar2, pageSize in number, pageNow in number, myRows out number,--总记录数 myPageCount out number,--总页数 p_cursor out tespackage.test_cursor,--返回的记录集 ) is --定义部分 --定义sql语句 字符串 v_sql varchar2(1000); --定义两个整数 v_begin number:=(pageNow-1)*pageSize+1; v_end number:=pageNow*pageSize; begin --执行部分 v_sql:='select * from ( select t1.*,rownum rn from ( select * from '||tableName||') t1 --第一个select语句出来的表的视图t1 where rownum<='||v_end||' ) wherw rn>='||v_begin'; --把游标和sql关联 open p_cursor for v_sql; --计算myRows和myPageCount --组织一个sql语句 v_sql:='select count(*) from '||tableName'; --执行sql语句,并把返回的值赋给myRows execute immediate v_sql into myRows; if mod(myRows,pageSize)=0 then myPageCount:=myRows/pageSize; else myPageCount:=myRows/pageSize+1; end if; --关闭游标 close p_cursor; end;