SQL分页查询存储过程代码分享
程序员文章站
2023-12-09 18:42:21
话不多说,请看代码
-------------------------------------
-----作者:张欣宇
-----时间:2013-06-28...
话不多说,请看代码
------------------------------------- -----作者:张欣宇 -----时间:2013-06-28 -----简介:根据参数和条件分页查询 ------------------------------------- create proc [dbo].[up_pagingquerybyparameter] ( ----- 表名或能查询到结果的sql语句{sql语句左右必须有括号例:(select * from tbl1)} @tablename varchar(max), ----- 要查询的列名语句; 可空默认* @columnname varchar(5000), ----- 用来排序的列; 不可为空 @orderbycolumnname varchar(50), ----- 排序desc(倒序5.4.3.2.1)或asc(正序1.2.3.4.5); 可空默认asc @shrtby varchar(4), ----- where条件; 可空默认1=1 @where varchar(5000), ----- 每页显示数; 可空默认20 @pageshows int, ----- 当前页数; 可空默认1 @currentpage int, ----- 0为分页查询;其他为查询全部; 可空默认0 @ispaging int ) as begin ----- 参数检查及规范 if isnull(@where,n'')=n'' set @where = n'1=1'; if isnull(@columnname,n'')=n'' set @columnname = n'*'; if isnull(@pageshows,0)<1 set @pageshows = 20; if isnull(@currentpage,0)<1 set @currentpage = 1; if isnull(@shrtby,n'')=n'' set @shrtby = 'asc'; if isnull(@ispaging,0)<>1 set @ispaging = 0; ----- 定义 -- 拼接的sql语句 declare @sqlstr nvarchar(max); declare @sqlwithstr nvarchar(max); -- 开始条数 declare @startindex int; -- 结束条数 declare @endindex int; ----- 赋值 set @startindex = (@currentpage-1)*@pageshows+1; print(@currentpage); print(@pageshows); print(@startindex); set @endindex = @currentpage*@pageshows; print(@endindex); set @orderbycolumnname=@orderbycolumnname+' '+@shrtby; ----- 分页查询 set @sqlwithstr = n'with temp as(select row_number() over(order by '+@orderbycolumnname+n') as rownumber,'+@columnname+n' from '+@tablename+n' as tablename where '+@where+n')'; if(@ispaging = 0) begin set @sqlstr = @sqlwithstr + n' select '+@columnname+n' from temp where temp.rownumber between '+convert(nvarchar(20),@startindex)+n' and '+convert(nvarchar(20),@endindex)+n''; ---- print(@sqlstr); exec(@sqlstr); ----- 总数查询 set @sqlstr = @sqlwithstr + n' select count(*) as totalnumber from temp'; ---- print(@sqlstr); exec(@sqlstr); end else begin set @sqlstr = @sqlwithstr + n' select '+@columnname+n' from temp'; ---- print(@sqlstr); exec(@sqlstr); end end
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!