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

 更新时间:2016年12月25日 14:16:56   作者:欣宇  
本文主要分享了SQL分页查询存储过程的具体实例代码,具有一定的参考价值,需要的朋友一起来看下吧

话不多说,请看代码

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

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

相关文章

  • MySQL数据库安全之防止撰改的方法

    MySQL数据库安全之防止撰改的方法

    这篇文章主要介绍了MySQL数据库防止撰改的方法,需要的朋友可以参考下
    2014-07-07
  • MYSQL初学者命令行使用指南

    MYSQL初学者命令行使用指南

    其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是“晏子“译的“MYSQL中文参考手册“不仅免费每个相关网站都有下载,而且它是最权威的。
    2008-06-06
  • MySQL8.0.23版本的root密码重置最优解法

    MySQL8.0.23版本的root密码重置最优解法

    这篇文章主要介绍了MySQL8.0.23版本的root密码重置最优解法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 解读数据库的嵌套查询的性能问题

    解读数据库的嵌套查询的性能问题

    这篇文章主要介绍了解读数据库的嵌套查询的性能问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Mysql常见bug及解决方案超详细讲解

    Mysql常见bug及解决方案超详细讲解

    在使用MySQL的过程中,相比大家都踩过不少坑,下面这篇文章主要给大家介绍了关于Mysql常见bug及解决方案超详细讲解的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • mysql如何配置secure_file_priv

    mysql如何配置secure_file_priv

    这篇文章主要介绍了mysql如何配置secure_file_priv问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MySQL 主键与索引的联系与区别分析

    MySQL 主键与索引的联系与区别分析

    这篇文章主要介绍MySQL 主键与索引的联系与区别,使用mysql的朋友可以看下
    2013-02-02
  • MySQL中使用group by 是总是出现1055的错误(推荐)

    MySQL中使用group by 是总是出现1055的错误(推荐)

    这篇文章主要介绍了MySQL中使用group by 是总是出现1055的错误,小编通过查阅相关资料才把问题解决,今天小编记录下分享到脚本之家平台,需要的朋友可以参考下
    2020-02-02
  • CentOS 6.5 i386 安装MySQL 5.7.18详细教程

    CentOS 6.5 i386 安装MySQL 5.7.18详细教程

    这篇文章主要介绍了CentOS 6.5 i386 安装MySQL 5.7.18详细教程,需要的朋友可以参考下
    2017-04-04
  • MySQL表的增删改查基础教程

    MySQL表的增删改查基础教程

    这篇文章主要给大家介绍了关于MySQL表的增删改查的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论