SQL分页数据查询

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

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

Create   Procedure  SelectPage  @TableName   nvarchar ( 64 ),  @KeyField   nvarchar ( 64 ),  @Fields   nvarchar ( 512 ),  @PageIndex   int @PageSize   int   =   15
As
Declare   @sql   nvarchar ( 512 )
  
if   @PageIndex   =   1    begin
    
Set   @sql   =   ' Select top  '   +   convert ( nvarchar ( 8 ), @PageSize +   '   '   +   @Fields   +   '  From  '   +   @TableName
  
end
  
else   begin
    
Set   @sql   =   ' select top  '   +   convert ( nvarchar ( 8 ), @PageSize +   '   '   +   @Fields   +   '  From  '   +    @TableName
    
Set   @sql   =   @sql   +   '  Where  '   +   @KeyField   +   '  > (select max( '   +   @KeyField   +   ' ) From (Select Top  '
    
Set   @sql   =   @sql   +   convert ( nvarchar ( 8 ),  @PageSize   *  ( @PageIndex   -   1 ))  +   '  * from  ' +   @TableName   +   '  Order by  ' +   @KeyField   + ' ) T) '
  
end

  
-- Print @sql
   exec  sp_executesql  @sql

参数说明:

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

@KeyField:数据表主键字段

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

@PageIndex:要查询的页面索引

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

你可能感兴趣的:(SQL分页数据查询)