T-SQL 分页存储过程

分页存储一:

create Procedure prc_GetRecordForPaging
   @tableName varchar(255),--表名
   @fieldName varchar(255),--字段名称
   @pageSize int=10,       --单页显示大小
   @pageIndex int=1,       --页码
   @orderType bit=0,       --设置排序类型,非0则是降序
   @strCondition varchar(2000)='' --查询条件(注意,不要添加where语句)
 as
   declare @strSQL varchar(6000) --主执行语句
   declare @strTemp varchar(1000) --临时执行语句
   declare @strOrder varchar(500) --排序语句
   if @orderType != 0 --降序
      begin
        set @strTemp='< (select min' 
        set @strOrder=' order by ['+@fieldName+'] desc' --排序语句
      end
   else    -- 升序
      begin
        set @strTemp ='> (select Max'
        set @strOrder =' order by ['+@fieldName+'] asc'
      end
   set @strSQL ='select top'+str(@pageSize)+' * from '
               + @tableName+'] where ['+ @fieldName+ ']'
               + @strTemp+ '(['+ @fieldName+ ']) from ( select top'+
               + str(@pageSize*(@pageIndex-1))+'['
               + @fieldName +'] from ['+ @tableName+']'
               + @strOrder + ') as tableTemp)'
               + @strOrder
 
   if @strCondition != ''
      set @strSQL ='select top'+str(@pageSize)+' * from '
               + @tableName+'] where ['+ @fieldName+ ']'
               + @strTemp+ '(['+ @fieldName+ ']) from ( select top'+
               + str(@pageSize*(@pageIndex-1))+'['
               + @fieldName +'] from ['+ @tableName+'] where '
               + @strCondition + '' + @strOrder + ') as tableTemp) and'
               + @strCondition + '' + @strOrder
   if @pageIndex = 1
       begin
         set @strTemp =''
           if @strCondition !=''
              set @strTemp =' where ('+ @strCondition + ')'
           
           set @strSQL ='select top'+ str(@pageSize)+ ' * from ['
                       + @tableName+ ']'+ @strTemp+ '' + @strOrder
       end
   Execute(@strSQL)
 Go

分页存储二:

create procedure pro_GetRecordForPaging
     @tableName varchar(200),--表名
     @pageSize int, --每页显示记录数
     @pageIndex int, --当前页码
     @colName varchar(30) --排序的字段名
 as
   begin
     declare @strSQL varchar(300)
     if @pageIndex = 1
       set @strSQL ='select top ['+cast(@pageSize as varchar(20)) + ']'
                    + ' * from ['+ @tableName + ']'
                    + ' order by ['+ @colName + ']'
     else
       set @strSQL='select top ['+cast(@pageSize as varchar(20)) + ']'
                   + ' * from ['+ @tableName + ']'
                   + ' where ['+ @colName + ']'
                   + ' not in ( select top ['
                   + cast((@pageIndex-1)*pageSize as varchar(20)) + ']'
                   + @colName + ' from ['+ @tableName + ']'
                   + 'order by ['+ @colName +'])'
                   + 'order by ['+ @colName +']'
     --print
     Execute(@strSQL)
   end
 go

知识共享许可协议
《T-SQL 分页存储过程》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
相邻依据:发表时间
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     186.66ms