• 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)
  • 相关阅读:
    疫情期间刷题列表
    P3379 【模板】最近公共祖先(LCA)
    P3865 【模板】ST 表
    Distance Queries
    Frequent values
    P3388 【模板】割点(割顶)
    P1168 中位数
    单链表排序
    大数据各组件重要技术点总结
    Flink CDC同步MySQL分库分表数据到Iceberg数据湖实践
  • 原文地址:https://www.cnblogs.com/crazy29/p/3195929.html
Copyright © 2020-2023  润新知