听韩老师的oracle的分页存储过程

来源:互联网 发布:程序员的职业规划 编辑:程序博客网 时间:2024/05/21 22:40

听韩老师的oracle的分页存储过程

--创建一个包,在该包中,我定义类型test_cursor,是个游标create or replace package testpackage astype 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语句出来的表的视图t1where 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;