帝王谷资源网 Design By www.wdxyy.com
自开始做项目以来,一直在用。这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用。
/*---------------------------------------------- *procedure name : P_PageResult * author :Fay * create date : 2014-07-18 */ CREATE PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage int = 1, --当前页页码 (即Top currPage) @showColumn varchar(2000) = '*', --需要得到的字段 (即 column1,column2,......) @tabName varchar(2000), --需要查看的表名 (即 from table_name) @strCondition varchar(2000) = '', --查询条件 (即 where condition......) 不用加where关键字 @ascColumn varchar(100) = '', --排序的字段名 (即 order by column asc/desc) @bitOrderType bit = 0, --排序的类型 (0为升序,1为降序) @pkColumn varchar(50) = '', --主键名称 @pageSize int = 20 --分页大小 AS BEGIN -- 存储过程开始 -- 该存储过程需要用到的几个变量 -- DECLARE @strTemp varchar(1000) DECLARE @strSql varchar(4000) --该存储过程最后执行的语句 DECLARE @strOrderType varchar(1000) --排序类型语句 (order by column asc或者order by column desc) BEGIN IF @bitOrderType = 1 -- bitOrderType=1即执行降序 BEGIN SET @strOrderType = ' ORDER BY '+@ascColumn+' DESC' SET @strTemp = '<(SELECT min' END ELSE BEGIN SET @strOrderType = ' ORDER BY '+@ascColumn+' ASC' SET @strTemp = '>(SELECT max' END IF @currPage = 1 -- 如果是第一页 BEGIN IF @strCondition != '' SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+ ' WHERE '+@strCondition+@strOrderType ELSE SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+@strOrderType END ELSE -- 其他页 BEGIN IF @strCondition !='' SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+ ' WHERE '+@strCondition+' AND '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+ ' '+@pkColumn+' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderType ELSE SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+ ' WHERE '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+' '+@pkColumn+ ' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderType END END EXEC (@strSql) END -- 存储过程结束 ------------------------------------------------ GO
调用方法:
prcPageResult 1,'*','TableName','','CreateDate',1,'PkID',25
上面表示,查询表TableName的所有字段,前25条记录,因为是第一页,排序字段为CreateDate,降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中非常的适用。不信您可以试试看,尤其是在百万级数据上,他的优势就显露无疑了,当然,这段代码是可以转换成MySql中的存储过程的,不过,在这里就不给大家了,你们可以自己试着转换看看。
下面的存储过程查询表的记录数:
/*---------------------------------------------- *procedure name : prcRowsCount * author :Fay * create date : 2014-07-18 */ CREATE PROC prcRowsCount @tabName varchar(200), --需要查询的表名 @colName varchar(200)='*', --需要查询的列名 @condition varchar(200)='' --查询条件 AS BEGIN DECLARE @strSql varchar(255) IF @condition = '' SET @strSql='select count('+@colName+') from '+@tabName ELSE SET @strSql='select count('+@colName+') from '+@tabName+' where '+@condition EXEC (@strSql) END ------------------------------------------------ GO
还有删除记录的通用存储过程和查询单条记录的通用存储过程在这里就不奉送了,感谢提供原通用分页查询存储过程的哥们,谢谢。
标签:
分页查询,存储过程
帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年12月28日
2024年12月28日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]