create or replace package cursos is
type dept is ref cursor;
procedure dept_test(
tables in varchar2,--传入一个表
pageSize in number,--传入每页大小
pagecount in number,--传一个页数
myrows out number,--返回一个总记录数
mypageCount out number,--返回一个总页数
depts out cursos.dept--返回一个结果集
);
end;
2、创建Oracle包体的代码
create or replace package body cursos is
procedure dept_test(
tables in varchar2,--传入一个表
pageSize in number,--每页大小
pagecount in number,--传入一个页数
myrows out number,--返回一个总记录数
mypageCount out number,--返回一个总页数
depts out cursos.dept--返回一个结果集
)is
v_sql varchar2(2000);
v_begin number:=(pagecount-1)*pageSize+1;
v_end number:=pagecount*pageSize;
begin
--拼接sql语句
v_sql:='select * from(select t1.*,rownum rn from (select * from '|| tables||') t1
where rownum<='||v_end||') where rn>='||v_begin||'';
--打开游标
open depts for v_sql;
v_sql :='select count(*) from '||tables||'';
--执行SQL语句并把返回的值赋给myrows
execute immediate v_sql into myrows;
if mod(myrows,pageSize)=0 then
mypageCount :=myrows/pageSize;
else
mypageCount :=myrows/pageSize+1;
end if;
end;
end;