create or replace package pck_users as type user_cursor is ref cursor; end pck_users create or replace procedure fenye ( tableName in varchar2, --表名 pageIndex in number, --显示的页数 pagetotal in number, --每页显示的条数 sortName in varchar2,--排序的字段 sortDesc in varchar2,--升序还是降序 pageCount out number,--总的页数 totalCount out number, --总的数量, p_cursor out pck_users.user_cursor, --返回游标 resut_code out number --状态码 ) is --定义部分 v_begin number:=((pageIndex*pagetotal)-pagetotal)+1;--从那个位置开始查询 v_end number:=pageIndex*pagetotal; v_sql varchar(2000); --执行的sql语句 --执行部分 begin v_sql:='select * from (select t.*,rownum rn from (select * from '|| tableName ||' order by '|| sortName||' '||sortDesc ||') t1 where rownum<='|| v_end ||') where rn>='||v_begin ; open p_cursor for v_sql;--打开游标 --查询总条数 select count(*) into totalCount from tableName; --这样也行 /* v_sql:='select count(*) into totalCount from '||tableName; execute immediate v_sql into totalCount; */ --计算总的页数 ,用mod函数取余 if mod(totalCount,pagetotal)=0 then pageCount:=totalCount/pagetotal; else pageCount:=(totalCount/pagetotal)+1; end if; close p_cursor; --关闭游标 resut_code:=1; --成功 --异常部分 exception when other then resut_code:=0; --失败 end;