SQL分页查询存储过程代码分享
话不多说,请看代码
------------------------------------- -----作者:张欣宇 -----时间:2013-06-28 -----简介:根据参数和条件分页查询 ------------------------------------- Createproc[dbo].[Up_PagingQueryByParameter] ( -----表名或能查询到结果的SQL语句{SQL语句左右必须有括号例:(select*fromtbl1)} @TableNamevarchar(max), -----要查询的列名语句;可空默认* @ColumnNamevarchar(5000), -----用来排序的列;不可为空 @OrderByColumnNamevarchar(50), -----排序desc(倒序5.4.3.2.1)或asc(正序1.2.3.4.5);可空默认asc @ShrtByvarchar(4), -----Where条件;可空默认1=1 @Wherevarchar(5000), -----每页显示数;可空默认20 @PageShowsint, -----当前页数;可空默认1 @CurrentPageint, -----0为分页查询;其他为查询全部;可空默认0 @IsPagingint ) as begin -----参数检查及规范 ifisnull(@Where,N'')=N''set@Where=N'1=1'; ifisnull(@ColumnName,N'')=N''set@ColumnName=N'*'; ifisnull(@PageShows,0)<1set@PageShows=20; ifisnull(@CurrentPage,0)<1set@CurrentPage=1; ifisnull(@ShrtBy,N'')=N''set@ShrtBy='asc'; ifisnull(@IsPaging,0)<>1set@IsPaging=0; -----定义 --拼接的SQL语句 declare@SqlStrnvarchar(max); declare@SqlWithStrnvarchar(max); --开始条数 declare@StartIndexint; --结束条数 declare@EndIndexint; -----赋值 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'withtempas(selectROW_NUMBER()over(orderby'+@OrderByColumnName+N')asRowNumber,'+@ColumnName+N'from'+@TableName+N'astableNamewhere'+@Where+N')'; if(@IsPaging=0) begin set@SqlStr=@SqlWithStr+N'select'+@ColumnName+N'fromtempwheretemp.RowNumberbetween'+convert(nvarchar(20),@StartIndex)+N'and'+convert(nvarchar(20),@EndIndex)+N''; ----print(@SqlStr); exec(@SqlStr); -----总数查询 set@SqlStr=@SqlWithStr+N'selectcount(*)asTotalNumberfromtemp'; ----print(@SqlStr); exec(@SqlStr); end else begin set@SqlStr=@SqlWithStr+N'select'+@ColumnName+N'fromtemp'; ----print(@SqlStr); exec(@SqlStr); end end
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!