IT猫扑网文章教程

分类分类

oracle分页存储过程

2015-06-28 00:00作者:网管联盟

  create or replace package mypack

  as

  type cursor testCursor is ref cursor;

  end mypack;

  --tableName表名, pageSize每页显示的数量,pageNow第几页,rows总页数,pageCount总页数,p_cursor游标

  create or replace procedure fenye

  (tableName in varchar2, pageSize in number, pageNow in number, rows out number, pageCount out number, p_cursor out mypack.testCursor)

  is

  declare

  --定义sql语句

  v_sql varchar2(1000);

  --定义2个整数记录上一页

  v_begin number := (pageNow - 1) * pageSize + 1;

  v_end number := pageNow * pageSize;

  begin

  v_sql := 'select * from (select t.*, rownum r from (select * from '|| tableName ||') t where rownum<='|| v_end ||') where r>='|| v_begin ;

  --将游标和sql语句关联起来

  open p_cursor for v_sql;

  --计算rows和pageCount;

  v_sql := 'select count(*) from' || tableName;

  --执行sql语句,并将返回的值付给 rows;

  execute immediate v_sql into rows;

  pageCount := (rows + pageSize - 1) / pageSize; --总页数;

  close p_cursor;

  end;

展开全部

相关文章

说两句网友评论
    我要跟贴
    取消