`
禹爸爸
  • 浏览: 79894 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

SQL分页数据查询

阅读更多

在许多数据库应用系统中,会对数据进行大量的查询操作。当查询数据量比较大时查询所用的时间就会变得较慢,所以我们希望可以分批的获取数据。

特写了一个存储过程用于分批获取数据。鉴于游标效率低,故此处没有采用。

CreateProcedureSelectPage@TableNamenvarchar(64),@KeyFieldnvarchar(64),@Fieldsnvarchar(512),@PageIndexint,@PageSizeint=15
As
Declare@sqlnvarchar(512)
if@PageIndex=1begin
Set@sql='Selecttop'+convert(nvarchar(8),@PageSize)+''+@Fields+'From'+@TableName
end
elsebegin
Set@sql='selecttop'+convert(nvarchar(8),@PageSize)+''+@Fields+'From'+@TableName
Set@sql=@sql+'Where'+@KeyField+'>(selectmax('+@KeyField+')From(SelectTop'
Set@sql=@sql+convert(nvarchar(8),@PageSize*(@PageIndex-1))+'*from'+@TableName+'Orderby'+@KeyField+')T)'
end

--Print@sql
execsp_executesql@sql

参数说明:

@TableName:要查询的数据表名称

@KeyField:数据表主键字段

@Fields:要查询的字段名列表,使用逗号分隔,最后一个字段名后不需要逗号

@PageIndex:要查询的页面索引

@PageSize:每页数据笔数,默认为15,即每页15笔数据

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics