共计 1549 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要讲解了“sqlserver 通用分页的存储过程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“sqlserver 通用分页的存储过程”吧!
复制代码 代码如下:
create proc commonPagination @columns varchar(500), -- 要显示的列名,用逗号隔开 @tableName varchar(100), -- 要查询的表名 @orderColumnName varchar(100), -- 排序的列名 @order varchar(50), -- 排序的方式,升序为 asc, 降序为 desc @where varchar(100), --where 条件,如果不带查询条件,请用 1=1 @pageIndex int, -- 当前页索引 @pageSize int, -- 页大小 (每页显示的记录条数) @pageCount int output -- 总页数,输出参数 as begin declare @sqlRecordCount nvarchar(1000) -- 得到总记录条数的语句 declare @sqlSelect nvarchar(1000) -- 查询语句 set @sqlRecordCount=N select @recordCount=count(*) from +@tableName + 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 set @sqlSelect = N select +@columns+ from ( select row_number() over (order by +@orderColumnName+ +@order +) as tempid,* from +@tableName+ where + @where + ) as tempTableName where tempid between +str((@pageIndex - 1)*@pageSize + 1 ) + and +str( @pageIndex * @pageSize) exec (@sqlSelect) -- 执行动态 Sql end go -- 以下是调用示例 use pubs go declare @pageCount int exec commonPagination job_id,job_desc , jobs , job_id , asc , 1=1 ,2,2,@pageCount output select 总页数为: + str(@pageCount)
感谢各位的阅读,以上就是“sqlserver 通用分页的存储过程”的内容了,经过本文的学习后,相信大家对 sqlserver 通用分页的存储过程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!
正文完