【原创交流】实现分页功能的一个存储过程
今天整理电脑,发现做毕业设计时候写的一个分页的存储过程,帖出来和大家分享。时间太晚了,暂时就原版帖出来,如有改进,可直接回帖,欢迎交流。
目前分页的方法很多,欢迎大家一起来展示展示自己遇到分页时候的处理方法。
有水的,快别私藏了,赶紧拿出来吧 @13#
----包头
create or replace package TMS is
-- Public function and procedure declarations
procedure searchinpage(
tname in varchar2, --表名
where_ in varchar2,
ordercolumn in varchar2,
ordertype in varchar2,
p in out number, --当前页
pagesize number, --每页多少条记录
recordcount out number, --总共多少条记录
pagecount out number, --共多少页
rs out sys_refcursor --当前页的内容
) ;
end TMS;
----包体
create or replace package body TMS is
-- Function and procedure implementations
procedure searchinpage(
tname in varchar2, --表名
where_ in varchar2,
ordercolumn in varchar2,
ordertype in varchar2,
p in out number, --当前页
pagesize number, --每页多少条记录
recordcount out number, --总共多少条记录
pagecount out number, --共多少页
rs out sys_refcursor --当前页的内容
) is
begin
execute immediate 'select count(*) from '|| tname into recordcount; --函数
pagecount:=ceil(recordcount/pagesize); --ceil函数相除时只要有余数就+1
if p<1 then
p:=1;
elsif p>pagecount then
p:=pagecount;
end if;
open rs for 'select * from ((select s.*, rownum num from '|| tname ||' s where '|| where_ ||') order by '|| ordercolumn ||' '|| ordertype ||') ss where ss.num between '|| (p*pagesize-pagesize+1) ||' and '||(pagesize*p);
end ;
end TMS;
@20# 回复可见,只好先回复 再做打算拿了 感觉效率蛮高的(嘛 …… Whisper1166 发表于 2012-12-26 00:53 static/image/common/back.gif
感觉效率蛮高的(嘛 ……
嗯 ,存储过程虽然用起来麻烦一点,但是效率要高一些。 不要大意的把你们的代码贴出来嘛@66#
@Whisper1166 Mr_Alex 发表于 2012-12-26 08:19 static/image/common/back.gif
不要大意的把你们的代码贴出来嘛
@Whisper1166
@ou#我数据库这边写的那些捉襟见肘的玩意儿乃们就54掉就好了…… 戳开看看 @68#从来都是在程序里写分页 狂奔的瘦子 发表于 2012-12-26 11:34 static/image/common/back.gif
从来都是在程序里写分页
我开发时候直接用的hibernate自带的分页 ,老大发话了,开发效率第一哇 @20# Mr_Alex 发表于 2012-12-26 15:08 static/image/common/back.gif
我开发时候直接用的hibernate自带的分页 ,老大发话了,开发效率第一哇...
@100#俺们从来不讲究效率...哈哈哈 看来还是要多多学习啊~ 感觉看不太懂,呵呵 紫色的鸢尾 发表于 2013-3-24 21:57 static/image/common/back.gif
看来还是要多多学习啊~
加油呢 @ou#
页:
[1]