欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

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