加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql必读SQL分页查询存储过程代码分享

发布时间:2020-12-12 02:49:14 所属栏目:MySql教程 来源:网络整理
导读:《Mysql必读SQL分页查询存储过程代码分享》要点: 本文介绍了Mysql必读SQL分页查询存储过程代码分享,希望对您有用。如果有疑问,可以联系我们。 话不多说,请看代码 MYSQL数据库 ------------------------------------------作者:张欣宇-----时间:2013-06-28

《Mysql必读SQL分页查询存储过程代码分享》要点:
本文介绍了Mysql必读SQL分页查询存储过程代码分享,希望对您有用。如果有疑问,可以联系我们。

话不多说,请看代码MYSQL数据库

-------------------------------------
-----作者:张欣宇
-----时间: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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的赞助,同时也希望多多支持编程之家PHP!MYSQL数据库

《Mysql必读SQL分页查询存储过程代码分享》是否对您有启发,欢迎查看更多与《Mysql必读SQL分页查询存储过程代码分享》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读