用SQL2005的ROW_NUMBER()实现分页功能

来源:互联网 发布:4px递四方 知乎 编辑:程序博客网 时间:2024/05/29 04:38
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

ECLARE@pagenumASINT,@pagesizeASINT
SET@pagenum=2
SET@pagesize=3
SELECT*
FROM(SELECTROW_NUMBER()OVER(ORDERBYnewsidDESC)ASROWnum,
       newsid,topic,ntime,hits
     FROMnews)ASD
WHEREROWnumBETWEEN(@pagenum-1)*@pagesize+1AND@pagenum*@pagesize
ORDERBYnewsidDESC


aspx里面只需给SQL传入pageid和条数即可。

CSDN上还有个存储过程实现分页的代码:

ALTERPROCEDUREnews_Showlist
(
@tblName  varchar(255),      --表名
@strGetFieldsvarchar(1000), --需要返回的列
@fldNamevarchar(255),     --排序的字段名
@PageSize  int,         --页尺寸
@PageIndex int,          --页码
@strWhere varchar(1500), --查询条件(注意:不要加where)
@Sortvarchar(255)     --排序的方法

)
AS
declare@strSQL  varchar(5000)      --主语句
declare@strTmp  varchar(110)       --临时变量
declare@strOrdervarchar(400)       --排序类型

 

if@Sort='desc'
begin
set@strTmp='<(selectmin'
set@strOrder='orderby'+@fldName+'desc'
--如果@OrderType不是,就执行降序,这句很重要!
end
else
begin
set@strTmp='>(selectmax'
set@strOrder='orderby'+@fldName+'asc'
end
 
if@PageIndex=1
begin
if@strWhere!=''  
 begin
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+' from'+@tblName+'where'+@strWhere+''+@strOrder
 end
else
 begin
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+' from'+@tblName+''+@strOrder
 end
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+' from'
+@tblName+'where'+@fldName+''+@strTmp+'('+@fldName+')from(selecttop'+str((@PageIndex-1)*@PageSize)+''+@fldName+'from'+@tblName+''+@strOrder+')astblTmp)'+@strOrder
 
if@strWhere!=''
set@strSQL='selecttop'+str(@PageSize)+''+@strGetFields+' from'
+@tblName+'where'+@fldName+''+@strTmp+'('
+@fldName+')from(selecttop'+str((@PageIndex-1)*@PageSize)+''
+@fldName+'from'+@tblName+'where'+@strWhere+''
+@strOrder+')astblTmp)and'+@strWhere+''+@strOrder
end
exec(@strSQL)
RETURN

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击