【数据库】自己写的SQL Server分页存储过程

-- 字段as后尽量不要加引号,其它地方有用到引号的也要处理一下
-- 返回值:表1 - 查询的内容;表2 - 记录总数
-- 调用事例
--exec GetDataByPage 'select UserID,UserName','UserInfo','UserID desc',1,10
Create proc GetDataByPage
@SQL varchar(max), -- 要执行的SQL语句(from关键字前面的所有内容<即字段列表>)
@From varchar(max), -- from关键字后面的全部内容,包含多表连接查询
@OrderBy varchar(50), -- 用于排序的字段和排序方向(如:AddTime desc)
@PageIndex int, -- 当前页码
@PageSize int -- 每页显示的数量
as
begin
declare @Start int
declare @End int
declare @NewSQL varchar(max)
if @PageIndex = 1
begin
set @Start = 1
end
else
begin
set @Start = (@PageIndex - 1) * @PageSize + 1
end
set @NewSQL = 'select top ' + cast(@PageSize as varchar) + 
' * from (' + @SQL + ',row_number() over(order by ' + @OrderBy + ') as RankID from ' + @From + ') as C where RankID between ' + 
cast(@Start  as varchar) + ' and ' + cast(@PageSize  * 2 * @PageIndex as varchar)
exec(@NewSQL + ';select count(1) as TotalCount from ' + @From)
end


下载SQL文件:SQLSever分页存储过程.zip

  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号