zoukankan      html  css  js  c++  java
  • SQL Server 2012 通用分页存储过程

    创建存储过程:

    USE [数据库名]  
    GO  
      
    
    SET ANSI_NULLS ON  
    GO  
      
    SET QUOTED_IDENTIFIER ON  
    GO  
      
      
    CREATE PROCedure [dbo].[SplitPage]   
    @sqlName varchar(2000), --//输入参数:SQL检索语句或表名 
    @sqlOrder varchar(2000), --//输入参数:排序依据 
    @where varchar(100), --where 条件,如果不带查询条件,请用 1=1 
    @pageIndex int, --//输入参数:当前页码   
    @pageSize int, --//输入参数:每页显示记录条数  
    @pageCount int output --总页数,输出参数  
    as SET NOCOUNT ON   
    SET ANSI_WARNINGS OFF   
    
    declare @sqlRecordCount nvarchar(1000) --得到总记录条数的语句 
    set @sqlRecordCount=N'select @recordCount=count(*) from ' 
    +@sqlName + ' where '+ @where 
    declare @recordCount int --保存总记录条数的变量 
    exec sp_executesql @sqlRecordCount,N'@recordCount int output',@recordCount output 
    --动态 sql 传参 
    if( @recordCount % @pageSize = 0) --如果总记录条数可以被页大小整除 
    set @pageCount = @recordCount / @pageSize --总页数就等于总记录条数除以页大小 
    else --如果总记录条数不能被页大小整除 
    set @pageCount = @recordCount / @pageSize + 1 --总页数就等于总记录条数除以页大小加1 
      
    declare @indexStart int,@indexEnd int   
    set @indexStart = (@pageIndex-1)*@pageSize  
    if @indexStart <0   
    set @indexStart = 0  
     --//数据起始行ID   
      
    exec('select * from '+@sqlName +' order by '+@sqlOrder+ ' offset  ' + @indexStart + ' rows fetch next ' + @pageSize +' rows only') --//检索该页数据  
    go

    调用:

    declare @pageCount int
    exec SplitPage 'photo','id','1=1',2,2, @pageCount output 
    select '总页数为:' + str(@pageCount)
    --//photo为表名,根据id的顺序排序

    结果:

  • 相关阅读:
    Windows Server 2019 mmc无法创建单元
    .NET 设置IE代理
    检测WebService是否存在
    C#读取图片像素
    23种设计模式之简单工厂
    WinForm笔记一:文本框只允许输入数字
    ADO.NET笔记(一)XML导入导出和数据库
    winform中文本框的一些案例
    C#中的二进制序列化和Json序列化
    文件流操作(FileStream,StreamReader,StreamWriter)
  • 原文地址:https://www.cnblogs.com/bosamvs/p/6072609.html
Copyright © 2011-2022 走看看