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

  • 相关阅读:
    mysql-centos7部署mysql5.7.20
    tips-history添加命令的执行时间
    Maven核心概述
    Java动态代理
    JDBC(3)-数据库事务
    JDBC(2)-操作BLOB类型字段和批量插入
    redis+mysql读写方案
    Redis与Memcache区别最全整理【摘自百度】
    redis+mysql有几种用法?【摘录知乎】
    js 拷贝到剪贴板
  • 原文地址:https://www.cnblogs.com/sunshch/p/2438876.html
Copyright © 2011-2022 走看看