首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> 数据库技巧 -> 用SQL 2005的ROW_NUMBER() 实现分页功能  
用SQL 2005的ROW_NUMBER() 实现分页功能


文章类别:数据库技巧 来源: 作者: 发表日期:2006-10-28 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

DECLARE @pagenum AS INT, @pagesize AS INT
SET @pagenum = 2
SET @pagesize = 3
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY newsid DESC) AS rownum,
        newsid, topic, ntime, hits
      FROM news) AS D
WHERE rownum BETWEEN (@pagenum-1)*@pagesize+1 AND @pagenum*@pagesize
ORDER BY newsid DESC


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

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

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

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

 

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

上一篇:如何改变asp.net项目名称 下一篇:SQL Server 2005 - 如何在预存程序中调用另外一个预存程序
本栏目热门文章
·Windows XP下安装SQL2000企业版 2005-10-4
·"SQL Server不存在或访问被拒绝"问题的解决 2006-8-11
·在SQL Server 2000里设置和使用数据库复制 2005-11-13
·SQL中通配符、转义符与"["号的使用(downmoon) 2005-11-3
·SQL Server 数据库管理常用的SQL和T-SQL语句 2005-11-13
·SQL SERVER实用技巧 2005-11-3
·配置SQL Server 2000选项 2005-10-8
·如何使Microsoft SQL Server的日志文件不会增大? 2005-10-4
·Sql Server下数据库链接的使用方法 2005-11-21
·如何快速杀死占用过多资源(CPU,内存)的数据库进程 2005-11-13
新近更新文章
·分页存储过程2000 2006-11-16
·分页存储过程2005 2006-11-16
·SQL SERVER 2005中同义词实例 2006-11-16
·存储过程使用技巧 2006-11-16
·sql server 2005中的表分区 2006-11-16
·Sql server优化50法 2006-11-16
·优化SQL Server服务器内存配置的策略 2006-11-16
·利用UltraEdit快速将SQL语句转换为符合VB.NET语法格式 2006-11-16
·用SQL语句实现异构数据库之间的导数据导入/出 2006-11-9
·MS SQL用ROWCOUNT解决TOP子句不支持变量的问题 2006-11-9
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: