据说很快的数据库分页存储过程

据说很快的数据库分页存储过程

create procedure SqlDataPaging
@tbName varchar(255), --表名
@tbFields varchar(1000), --返回字段
@OrderField varchar(255), --排序的字段名
@PageSize int, --页尺寸
@PageIndex int, --页码
@OrderType bit, --排序类型,1是升序,0是降序
@strWhere varchar(1500), --查询条件
@Total int output --返回总记录数
as
declare @strSql varchar(5000) --主语句
declare @strOrder varchar(200) --排序
declare @strSqlCount nvarchar(500)--查询记录总数主语句
declare @strtemp varchar(50) --排序附加语句
--
------------排序-----------------1是降序,0未升序
if @OrderType !=0
begin
set @strtemp= '>(select max('
set @strOrder='order by ' + @OrderField + ' asc '
end
else
begin
set @strtemp= '<(select min('
set @strOrder='order by '+ @OrderField + ' desc'
end
--------------总记录数---------------
if @strWhere !=''
begin
set @strSqlCount='Select @TotalCout=count(*) from ' + @tbName + 'where '+ @strWhere
end
else
begin
set @strSqlCount='Select @TotalCout=count(*) from ' + @tbName
end
--------------如果是第一页------------
if @PageIndex =1
begin
if @strWhere !=''
begin
set @strSql = 'Select top' +str(@PageSize)+ ' ' + @tbFields + ' from '+ @tbName +' where ' + @strWhere + ' ' + @strOrder
end
else
begin
set @strSql = 'Select top' +str(@PageSize)+ ' ' + @tbFields + ' from '+ @tbName + ' ' + @strOrder
end
end
else
begin
if @strWhere !=''
begin
set @strSql='Select top ' +str(@PageSize) + ' ' + @tbFields
+' from ' + @tbName + ' where '+@OrderField +' '
+ @strtemp+ ' ' +@OrderField+ ') from (select top'
+str((@PageIndex-1)*@PageSize) + ' '+@OrderField +' from '+@tbName
+ @strWhere+ ' '+ @strOrder +') as tb)'+ @strOrder
end
else
begin
set @strSql='Select top ' + str(@PageSize) + ' ' + @tbFields
+' from ' + @tbName + ' where '+@OrderField + ' '
+ @strtemp+ ' ' +@OrderField+ ') from (select top'
+str((@PageIndex-1)*@PageSize) + ' '+@OrderField +' from '+@tbName
+ ' '+ @strOrder +') as tb)'+ @strOrder
end
end
exec sp_executesql @strSqlCount,N'@TotalCout int output',@Total output
exec(@strSql)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100555.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea2021.5.4激活码[在线序列号]「建议收藏」

    idea2021.5.4激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    49
  • python3——unboundlocalerror报错原因

    python3——unboundlocalerror报错原因出现此错误,一般是因为,在调用的函数内,使用了外部变量造成的。这里先姑且不管你的目的是什么(可能是你想对这个外部变量进行一些赋值操作;也可能是你只是想创建一个本地变量,但是你不小心弄成和外部变量重名了)报错原因0.首先必须假设你没有在调用函数内部开头使用globalExternal_variable#外部变量或者nonlocalExternal_variable#外部变量(因为…

    2022年6月25日
    29
  • 【安全漏洞】Struts2漏洞集合总结「建议收藏」

    【安全漏洞】Struts2漏洞集合总结「建议收藏」总结了一部分Strtus2漏洞,虽然现在这部分的漏洞很少了,但也是学习的一部分,收集的并不全面,后续会做补充。漏洞环境搭建可以使用在线的Vulfocus,或者使用docker部署。

    2022年7月19日
    16
  • http://wwwnno00.irrlicht3d.cn:8011/forum-20-3.html「建议收藏」

    http://wwwnno00.irrlicht3d.cn:8011/forum-20-3.html「建议收藏」
    http://wwwnno00.irrlicht3d.cn:8011/forum-20-3.html

    2022年6月3日
    36
  • 矢量积与叉乘_向量积叉乘的几何意义

    矢量积与叉乘_向量积叉乘的几何意义矢量叉乘,向量外积原创不易,路过的各位大佬请点个赞矢量叉乘,向量外积矢量叉乘,向量外积1.矢量叉乘定义2.模长3.方向4.坐标运算6.叉乘矩阵(斜对称矩阵)6.叉乘运算规则1.矢量叉乘定义定义两个向量a\mathbf{a}a和b\mathbf{b}b,他们的叉乘可以写为a×b\mathbf{a}\times\mathbf{b}a×b本质上向量叉乘为向量旋转,满足右手螺旋准则;叉乘结果是一个向量,向量模长是向量A,B组成平行四边形的面积;向量方向是垂直于向量A,B组成的平面;也

    2025年7月28日
    3
  • springboot启动不了也不报错的解决方案「建议收藏」

    springboot启动不了也不报错的解决方案「建议收藏」公司用的springboot,随着项目的不断庞大,经常会出现一些稀奇古怪的问题,其实多半是配置文件有问题,但是没有错误提示信息,就很是难受,无从下手,以下列举一些自己遇到的常见的问题处理办法:案例1.项目启动,控制台只打印了SPRING的日志,然后自动停止,如截图所示:这种什么错误信息都没有,也是醉了,其实遇到这种情况,可以把启动方法trycatch起来即可在控制台显示错误信息…

    2025年9月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号