| |
 |
|
 |
 |
|
 |
oracle 分页存储过程
|
|
|
包头:
|
create or replace package JT_P_page is -- Author : ujnjt -- Created : 2007-8-5 16:43:50 -- Purpose : 分页功能
-- Public type declarations type type_cur is ref cursor; --定义游标变量用于返回记录集
procedure Pagination(Pindex in number, --要显示的页数索引,从0开始 Psql in varchar2, --产生分页数据的查询语句 Psize in number, --每页显示记录数 Pcount out number, --返回的分页数 Prowcount out number, --返回的记录数 v_cur out type_cur --返回分页数据的游标 ); end JT_P_page;
|
包体:
|
create or replace package body JT_P_page is
procedure Pagination(Pindex in number, --要显示的页数索引,从0开始 Psql in varchar2, --产生分页数据的查询语句 Psize in number, --每页显示记录数 Pcount out number, --返回的分页数 Prowcount out number, --返回的记录数 v_cur out type_cur --返回分页数据的游标 ) AS v_sql VARCHAR2(1000); v_Pbegin number; v_Pend number;
begin v_sql := 'select count(*) from (' || Psql || ')'; execute immediate v_sql into Prowcount; --计算记录总数 Pcount := ceil(Prowcount / Psize); --计算分页总数
--显示任意页内容 v_Pend := Pindex * Psize + Psize; v_Pbegin := v_Pend - Psize + 1; --Psql := 'select rownum as rn , t.* from pay_en_voucher t'; --要求必须包含rownum字段
v_sql := 'select * from (' || Psql || ') where rn between ' || v_Pbegin || ' and ' || v_Pend; open v_cur for v_sql; end Pagination; end JT_P_page;
|
调用方法:
|
-- Created on 2007-8-5 by ujnjt
declare psqlContent varchar2(1000); pageIndex number; pageCount number; --返回的分页数 pageSize number; --每一页的记录数 rowscount number; -- 返回的记录总数 return_cur JT_P_PAGE.type_cur; curr_id pay_en_voucher.id%type; curr_rn number; begin psqlContent := 'select rownum as rn , t.id from pay_en_voucher t'; pageIndex := 0; pageSize := 20; JT_P_PAGE.Pagination(pageIndex, psqlContent, pageSize, pageCount, rowscount, return_cur); if return_cur%isopen then close return_cur; end if; for Counter in 0 .. pageCount - 1 loop pageIndex := Counter; JT_P_PAGE.Pagination(pageIndex, psqlContent, pageSize, pageCount, rowscount, return_cur); if return_cur%isopen then dbms_output.put_line('第' || (pageIndex + 1) || '页数据开始'); loop fetch return_cur into curr_rn, curr_id; if (return_cur%notfound) then exit; end if; dbms_output.put_line(curr_rn); dbms_output.put_line(curr_id); dbms_output.put_line('--------'); end loop; dbms_output.put_line('第' || (pageIndex + 1) || '页数据结束'); close return_cur; dbms_output.put_line('========================================='); end if; end loop; end;
|
|
|
|
发表于: 2007-08-05,修改于: 2007-08-05 18:41,已浏览637次,有评论1条
推荐
投诉
|
|
 |
|
 |
|  |
|
 |
 |
|
 |
网友评论
 |
|
 |
 |
网友:
本站网友 | 时间:2007-08-06 12:01:06 IP地址:222.64.7.★ |
|
|
|
psqlContent varchar2(1000);
pageIndex number;
pageCount number; --返回的分页数
pageSize number; --每一页的记录数
rowscount number; -- 返回的记录总数
return_cur JT_P_PAGE.type_cur;
curr_id pay_en_voucher.id%type;
curr_rn number;
详情咨询021-51695858 QQ:1209636 消息来自time
官方网站: www.abcnic.com
关键词:虚拟主机 空间租用 免费空间 ASP空间 PHP空间 NET空间 ASP虚拟主机
PHP虚拟主机 NET虚拟 BLOG虚拟主机 全能虚拟主机 全能空间 数据库 程序虚拟主机
全国第一家虚拟主机:支持伪静态.有利于提高排名
15G全能空间年付500元/月付50元 可免费试用
5GB 独立WEB空间、5GB 企业邮箱空间、5GB MYSQL数据库
IIS连接数据 500 个、500GB/月流量、共享日志文件空间
企业邮箱功能
赠送5GB 超大企业邮箱,500个Email企业邮箱用户
自动回复、自动转发、POP3、SMTP收发信、SMTP发信认证
邮件过滤、邮件拒收、邮件夹管理、邮件域管理、定制邮件数
数据库功能
支持5GB MSSQL数据库空间,5个用户数据库、Access
主机功能支持
采用安全稳定的Win2003 .net2.0 架构
支持ASP、PHP、ASP.NET、PERL等脚本、支持自定义CGI
全面支持.net2.0版本,独立的Application应用池,
支持SSI(Shtml),支持FrontPage扩展
可免费自行绑定5个域名、500个解析、500个子域名
|
|
|
|
 |
|
 |
|  |
|
 |
|