ITPub博客

首页 > 数据库 > Oracle > oracle存储过程分页的完整例子

oracle存储过程分页的完整例子

Oracle 作者:123456andywth 时间:2012-05-28 17:54:31 0 删除 编辑

先创建一个包
create or replace package testpackage as type test_cursor is ref cursor;
end testpackage;

create or replace procedure fenye
(tableName in varchar2,
pageSize in number, --一页显示记录数
pageNow in number,
myrows out number, --记录总数
myPageCount out number,--总页数
p_cursor out testpackage.test_cursor --返回的记录集
) is

--定义部分
--定义sql语句 字符串
v_sql varchar2(1000)--也可以设置更大,不过一般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 where rownum<='|| v_end||') where rn>='||v_begin;
--把游标和sql关联
open p_sursor for v_sql;
--技术myrows和myPageCount
--组织一个sql
v_sql:='select count(*) from '||tableName;
--执行sql,并把返回的值赋给myrows;
execute immediate v_sql into myrows;
--计算myPageCount
if mod(myrows,pageSize)=0 then
myPageCount=myrows/pageSize;
else
myPageCount=myrows/pageSize+1;
end if;
--关闭游标
--close p_cursor;
end;

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22702521/viewspace-1116949/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-10-13