各位用户为了找寻关于SQL分页查询存储过程代码分享的资料费劲了很多周折。这里教程网为您整理了关于SQL分页查询存储过程代码分享的相关资料,仅供查阅,以下为您介绍关于SQL分页查询存储过程代码分享的详细内容

话不多说,请看代码

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ------------------------------------- -----作者:张欣宇 -----时间: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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

原文链接:http://www.cnblogs.com/zhang625161495/p/6217020.html