zoukankan      html  css  js  c++  java
  • 分页存储过程二

    /********************************************************************************* *      Function:  GetPageData              * *      Description:                                                              * *             Sql2008分页存储过程             * *      Author:                                                                   * *             SUNSHICHENG                      * *      Finish DateTime:                                                          * *             2011/9/13               * *    Example:                  * *           GetPageData @Tablename = 'Table1', @Returnfields = 'ID',           * *     @PageIndex = 0, @PageSize = 10, @Where = '', @OrderBy = 'ID',     * *     @Ordertype = 0              *           *********************************************************************************/ ALTER PROCEDURE [dbo].[Pro_GetPageData] (     @TableName  nvarchar(3000),   -- 表名  @ReturnFields nvarchar(3000) = '*', -- 需要返回的列  @PageSize  int = 10,    -- 每页记录数  @PageIndex  int = 0,    -- 当前页码  @Where   nvarchar(3000) = '',    -- 查询条件  @OrderBy  nvarchar(200),   -- 排序字段名 最好为唯一主键  @OrderType  int = 1     -- 排序类型 1:降序 其它为升序 ) AS  DECLARE @TotalRecord int  DECLARE @TotalPage int  DECLARE @CurrentPageSize int     DECLARE @TotalRecordForPageIndex int     declare @CountSql nvarchar(4000)          if @OrderType = 1   BEGIN    set @OrderBy = ' Order by ' + REPLACE(@OrderBy,',',' desc,') + ' desc '   END  else   BEGIN    set @OrderBy = ' Order by ' + REPLACE(@OrderBy,',',' asc,') + ' asc '     END    -- 总记录  set @CountSql='SELECT @TotalRecord=Count(*) From '+@TableName+' '+@Where  execute sp_executesql @CountSql,N'@TotalRecord int out',@TotalRecord out    SET @TotalPage=(@TotalRecord-1)/@PageSize+1       SET @CurrentPageSize=(@PageIndex-1)*@PageSize

        -- 返回记录  set @TotalRecordForPageIndex=@PageIndex*@PageSize    exec ('SELECT *    FROM (SELECT TOP '+@TotalRecordForPageIndex+' '+@ReturnFields+', ROW_NUMBER() OVER ('+@OrderBy+') AS ROWNUM    FROM '+@TableName+ ' ' + @Where +' ) AS TempTable    WHERE TempTable.ROWNUM >    '+@CurrentPageSize)

       -- 返回总页数和总记录  SELECT @TotalPage as PageCount,@TotalRecord as RecordCount

  • 相关阅读:
    截图、贴图神器——Snipaste
    MySQL (InnoDB)在什么情况下无法使用索引
    美化博客园样式
    《快速阅读》全书脉络梳理
    MySQL 配置统计数据
    使用 MWeb + Typora 写作并发布到博客园
    浅谈操作系统的用户态和内核态
    一个后端工程师的开发软件
    程序写日志文件时该不该加锁 & PHP 写日志为什么加锁
    《小岛经济学》读书笔记
  • 原文地址:https://www.cnblogs.com/sunshch/p/2438876.html
Copyright © 2011-2022 走看看