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


    /*********************************************************************************
    *      Function:  GetPageList              *
    *      Description:                                                              *
    *             Sql2008分页存储过程             *
    *      Author:                                                                   *
    *             SUNSHICHENG                     *
    *      Finish DateTime:                                                          *
    *             2011/10/19               *
    *    Example:                  *
    *           GetPageData @Tablename = 'Table1', @Returnfields = 'ID',           *
    *     @PageIndex = 0, @PageSize = 10, @Where = '', @Orderfld = 'ID',     *
    *     @Ordertype = 0              *          
    *********************************************************************************/
    ALTER PROCEDURE [dbo].[Pro_GetPageList]
    (
        @TableName  nvarchar(3000),   -- 表名
     @ReturnFields nvarchar(3000) = '*', -- 需要返回的列
     @PageSize  int = 10,    -- 每页记录数
     @PageIndex  int = 0,    -- 当前页码
     @Where   nvarchar(3000) = '',    -- 查询条件
     @Orderfld  nvarchar(200),   -- 排序字段名 最好为唯一主键
     @OrderType  int = 1     -- 排序类型 1:降序 其它为升序
    )
    AS
     DECLARE @TotalRecord int
     DECLARE @TotalPage int
     DECLARE @StartPageSize int
        DECLARE @EndPageIndex int
        DECLARE @OrderBy nvarchar(255)
        DECLARE @CountSql nvarchar(4000) 
        DECLARE @Sql nvarchar(4000)
       
        if @OrderType = 1
      BEGIN
       set @OrderBy = ' Order by ' + REPLACE(@Orderfld,',',' desc,') + ' desc '
      END
     else
      BEGIN
       set @OrderBy = ' Order by ' + REPLACE(@Orderfld,',',' asc,') + ' asc '  
      END
     
     -- 总记录
     set @CountSql='SELECT @TotalRecord=Count(*) From ('+@TableName+') as t '+@Where
     execute sp_executesql @CountSql,N'@TotalRecord int out',@TotalRecord out
     
     SET @TotalPage=(@TotalRecord-1)/@PageSize+1
     SET @StartPageSize=(@PageIndex-1)*@PageSize
     set @EndPageIndex=@PageIndex*@PageSize
     
     set @Sql='SELECT ROW_NUMBER() OVER ('+ @OrderBy +') AS ROWNUM, '+@ReturnFields+' FROM ('+@TableName+') t '+@Where
     
     EXEC('SELECT * FROM ('+ @Sql + ') AS TempTable WHERE TempTable.ROWNUM > '+@StartPageSize+'  and TempTable.ROWNUM <= '+@EndPageIndex+' ')
     
     -- 返回总页数和总记录
     SELECT @TotalPage as PageCount,@TotalRecord as RecordCount

  • 相关阅读:
    java 调用webService的各种方法
    log4j.properties配置详细
    js的with语句使用方法
    Hibernate 拦截器 Hibernate 监听器
    Axis1.4 WebService
    Servlet
    ROOT android 原理。 基于(zergRush)
    创建固定大小的文件 Linux shell 脚本编写实例
    makefile 自动推导命令
    makefile的变量定义和赋值
  • 原文地址:https://www.cnblogs.com/sunshch/p/2438870.html
Copyright © 2011-2022 走看看