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的顺序排序

    结果:

  • 相关阅读:
    24-移动端app数据爬取
    24-移动端app数据爬取
    18闭包
    mysql日期 获取本月第一天 获取下个月的第一天
    介绍shell的来龙去脉给你看
    RHEL 和centos 的区别
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
    CDH管理界面查看各框架的版本(hive为例)
    Cloudera hadoop配置文件地址和修改配置属性方法
    idea快速创建级联目录
  • 原文地址:https://www.cnblogs.com/bosamvs/p/6072609.html
Copyright © 2011-2022 走看看