1 create or replace package pck_users as 2 type user_cursor is ref cursor; 3 end pck_users 4 5 create or replace procedure fenye ( 6 tableName in varchar2, --表名 7 pageIndex in number, --显示的页数 8 pagetotal in number, --每页显示的条数 9 sortName in varchar2,--排序的字段 10 sortDesc in varchar2,--升序还是降序 11 pageCount out number,--总的页数 12 totalCount out number, --总的数量, 13 p_cursor out pck_users.user_cursor, --返回游标 14 resut_code out number --状态码 15 ) 16 is 17 --定义部分 18 v_begin number:=((pageIndex*pagetotal)-pagetotal)+1;--从那个位置开始查询 19 v_end number:=pageIndex*pagetotal; 20 v_sql varchar(2000); --执行的sql语句 21 --执行部分 22 begin 23 v_sql:='select * from (select t.*,rownum rn from 24 (select * from '|| tableName ||' order by '|| sortName||' '||sortDesc ||') t1 where rownum<='|| v_end ||') 25 where rn>='||v_begin ; 26 open p_cursor for v_sql;--打开游标 27 --查询总条数 28 select count(*) into totalCount from tableName; 29 --这样也行 30 /* 31 v_sql:='select count(*) into totalCount from '||tableName; 32 --执行sql语句 33 execute immediate v_sql into totalCount; 34 */ 35 --计算总的页数 ,用mod函数取余 36 if mod(totalCount,pagetotal)=0 then 37 pageCount:=totalCount/pagetotal; 38 else 39 pageCount:=(totalCount/pagetotal)+1; 40 end if; 41 close p_cursor; --关闭游标 42 resut_code:=1; --成功 43 44 --异常部分 45 exception 46 when other then 47 resut_code:=0; --失败 48 end;