zoukankan      html  css  js  c++  java
  • 使用sql2005的新特性分页的储存过程:Top,Row_Number

    GO
    /****** 对象:  StoredProcedure [dbo].[uspCustomPaging]    ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    Create procedure [dbo].[uspCustomPaging] 
        
    @TableName varchar(50),                  --表或视图名
        @Fields varchar(5000= '*',              --字段名(全部字段为*)
        @OrderFields varchar(5000),            --排序字段(必须!支持多字段,建议建索引)
        @SqlWhere varchar(5000= '',         --条件语句(如and Name='a')
        @PageSize int,                                     --每页多少条记录
        @PageIndex int = 1 ,                           --指定当前为第几页
        @TotalPages int output                    --返回总页数 
    as
    begin
        
    declare @sql nvarchar(4000)
        
    declare @TotalRecords int   

        
    --计算总记录数及总页数     
        set @sql = 'select @TotalRecords = count(*) from ' + @TableName + ' where 1=1 ' + @sqlWhere
        
    exec sp_executesql @sql,N'@totalRecords int output',@TotalRecords output
        
    select @TotalPages=CEILING((@TotalRecords+0.0)/@PageSize)

        
    --处理页数超出范围情况
        if @PageIndex<=0 
            
    set @PageIndex = 1
        
    if @PageIndex>@TotalPages
            
    set @PageIndex = @TotalPages

        
    set @sql = 'select '+ @Fields + ' from (select top(@PageIndex*@PageSize) ' + @Fields + ',row_number() over(order by ' + @OrderFields + ') as rowNumber from ' + @TableName + ' where 1=1 ' + @SqlWhere + ') t where t.rowNumber >= ((@PageIndex-1)*@PageSize+1)'
        
        
    --print @Sql   
        exec sp_executesql @sql,N'@PageIndex int, @PageSize int',@PageIndex,@PageSize  
    end
  • 相关阅读:
    @ConfigurationProperties与@Value区别
    @ConfigurationProperties 注解使用姿势,这一篇就够了
    yml基本语法
    IDEA中自动导包设置及自动导包快捷键
    Mac安装JDK1.8详细教程
    Mac Safari 个人收藏夹如何使用?怎么管理?
    sql server分布式alwaysOn
    SQL Server数据库损坏、检测以及简单的修复办法【转】
    (4.44)sql server中的serverproperty
    sql server导出到excel错误:未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
  • 原文地址:https://www.cnblogs.com/jordan2009/p/2539114.html
Copyright © 2011-2022 走看看