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

    适用于2005以上版本

    create procedure [dbo].[SP_GetPageList]
    (
    @columns nvarchar(max),   --查询字段
    @tablename nvarchar(max), --表名视图
    @orderby nvarchar(max),   --排序字段
    @swhere nvarchar(max),     --查询条件
    @pagesize int,             --每页条数
    @pageindex int,            --页的索引
    @rowCount int output       --总记录数
    )
    as 
    
    --获取总记录数
    declare @sqlcount Nvarchar(max)
    set @sqlcount=N'select @rowCount=count(*) from '+@tablename+' '+@swhere
    exec sp_executesql @sqlcount, N'@rowCount int out', @rowCount out
    
    
    --计算页数
    declare @pagecout int 
    if @rowCount%@pagesize>0
    set @pagecout=(@rowCount/@pagesize)+1
    else
    set @pagecout=(@rowCount/@pagesize)
     
    
    --计算起始索引
    declare @begin nvarchar(30)
    declare @end nvarchar(30)
    
    if @pageindex<1
    set @pageindex=1
    
    if @pageindex>@pagecout
    set @pageindex=@pagecout
    set @begin=convert(nvarchar(30), (@pagesize*(@pageindex-1))+1)
    set @end=CONVERT(nvarchar(30), @pagesize*@pageindex)
    
    
    --查询结果
    declare @sqlre nvarchar(max)
    declare @top int
    set @top=@pageindex*@pagesize
    set @sqlre=N'select top '+Cast(@top as varchar)+' ROW_NUMBER() over('+@orderby+') as rownum, '+@columns+' from '+@tablename+' '+@swhere
    
    exec('select '+@columns+' from ('+@sqlre+') a where a.rownum between '+@begin+' and '+@end+' '+@orderby)
  • 相关阅读:
    B树,B+树比较
    Kafka、RabbitMQ、RocketMQ 全方位对比
    ElasticSearch 笔记
    AtomicReference实现单例模式
    Netty 核心组件笔记
    Netty Reactor 线程模型笔记
    urldecode和urlencode相互转换
    python字符格式问题SyntaxError: Non-UTF-8 code starting with 'xe4'
    百度文字识别获取access token
    Python中MD5加密
  • 原文地址:https://www.cnblogs.com/crazy29/p/3195929.html
Copyright © 2011-2022 走看看