自己手写的高效分页存储过程代码

news/2024/7/24 6:22:02 标签: Go

CREATE PROCEDURE Pages
@TableNames VARCHAR(200), --表名,可以是多个表,但不能用别名
@PrimaryKey VARCHAR(100), --主键,可以为空,但@Order为空时该值不能为空
@Fields VARCHAR(800), --要取出的字段,可以是多个表的字段,可以为空,为空表示select *
@PageSize INT, --每页记录数
@CurrentPage INT, --当前页,0表示第1页
@Filter VARCHAR(200) = '', --条件,可以为空,不用填 where
@Order VARCHAR(200) = '' --排序,可以为空,为空默认按主键升序排列,不用填 order by
AS
BEGIN
declare @topRow varchar(12)
declare @tempPageSize varchar(12)
if(len(@Order)>0)
begin
set @Order=' order by '+@Order
end
else
begin
set @Order=''
end
if (len(@Filter)<1)
begin
set @Filter=' 1=1'
end
if(@CurrentPage-1<=0)
set @CurrentPage=0
set @topRow= rtrim(ltrim(str(@PageSize*(@CurrentPage-1))))
set @tempPageSize= rtrim(ltrim(str(@PageSize)))
exec('
declare @temptable table(rownum int identity(1,1),Gid varchar(12))'+'
declare @datatable table(Gid varchar(12))'+'
DECLARE @Timer datetime'+'
SET @Timer = getdate() '+'
SET NOCOUNT ON '+'
insert into @temptable(Gid) select '+@PrimaryKey+' from '+@TableNames+' where '+@Filter+@Order+'
insert into @datatable(Gid) select top '+@tempPageSize+'Gid from @temptable where rownum>'+@topRow+'
set rowcount '+@tempPageSize+'

select '+@Fields+' from '+@TableNames+' where '+@Filter+' and '+@PrimaryKey+' in (select Gid from @datatable)'+@Order+'
set rowcount 0'+'
print(DATEDIFF(millisecond, @Timer, getdate()))')
print('insert into @temptable(Gid) select '+@PrimaryKey+' from '+@TableNames+' where '+@Filter+@Order)
print('select '+@Fields+' from '+@TableNames+' where '+@Filter+' and '+@PrimaryKey+' in(select Gid from @datatable) '+@Order)
end
GO


http://www.niftyadmin.cn/n/1128530.html

相关文章

商业智能软件的实施步骤依次是什么?

部分企业在刚开始接触商业智能的时候&#xff0c;以为只需要将商业智能软件买回就可以马上投入使用。其实并不是这么简单&#xff0c;商业智能软件作为一个解决方案&#xff0c;从前期的部署到后期的维护&#xff0c;需要考虑很多因素&#xff0c;比如数据系统后端架构&#xf…

闲话图片上传

作者&#xff1a;孙辉&#xff0c;美团金融前端团队成员。15年毕业加入美团&#xff0c;相信技术&#xff0c;更相信技术只是大千世界里知识的一种&#xff0c;个人博客: sunyuhui.com 陆陆续续做了不少需要上传图片的项目&#xff0c;场景各种各样&#xff0c;从前后端数据交互…

Stevie Nicks Earning Praise for New Solo Album 'In Your Dreams'

Im just at the other end of your nightIm always in and out of your lightRight down the middle of all your dreamsIn your dreams The title track of Stevie Nicks’ new album, In Your Dreams, is one of seven songs she wrote with the Eurythmics’ Dave Stewart, …

企业要想成功实施商业智能,要注意这几个方面

现在&#xff0c;越来越多的企业认识到了数据的重要性&#xff0c;开始寻求商业智能软件来解决海量复杂的数据处理分析难题。但不少企业在实施商业智能的过程中存在一些误区&#xff0c;忽视了很多重要因素。在此&#xff0c;笔者提出了企业在实施商业智能时&#xff0c;需要注…

原来js中的escape的编码方式是这样的

document.write(escape("浙江省")); 和 HttpUtility.UrlEncodeUnicode("浙江省") 原来是变成了unicode码了

分享Kali Linux 2017年第18周镜像文件

2019独角兽企业重金招聘Python工程师标准>>> 分享Kali Linux 2017年第18周镜像文件 Kali Linux官方于4月30日发布2017年的第18周镜像。这次维持了11个镜像文件的规模。默认的Gnome桌面的4个镜像&#xff0c;E17、KDE、LXDE、MATE、XFCE桌面的各一个&#xff0c;手机…

商业智能软件的基本体系结构

商业智能软件可以收集、管理、分析和转化企业中现有的数据&#xff0c;使这些数据成为可用的信息。让企业更轻松地获取洞察力&#xff0c;帮助企业做出明智的经营决策。这些数据包括来自企业业务系统的订单、库存、交易账目、客户和供应商&#xff0c;还有来自行业和竞争对手的…

代码意识流——花朵数问题(七)

本文前一部分的链接http://www.cnblogs.com/KBTiller/archive/2011/06/05/2073421.html 20.验算 验算过程的基本思路是求出“和”中各个数字有多少个&#xff0c;然后与得到这个"和"的数字组合比较&#xff0c;如果两者一致则“和”是一个花朵数。 例如&#xff…