SQLServer分页查询通用存储过程(只做分页查询用)
2023-06-13 09:15:39 时间
自开始做项目以来,一直在用。这段存储过程的的原创者(SORRY,忘记名字了),写得这段SQL代码很不错,我在这个基础上,按照我的习惯以及思维方式,调整了代码,只做分页查询用。
/*---------------------------------------------- *procedurename:P_PageResult *author:Fay *createdate:2014-07-18 */ CREATEPROCEDUREprcPageResult --获得某一页的数据-- @currPageint=1,--当前页页码(即TopcurrPage) @showColumnvarchar(2000)="*",--需要得到的字段(即column1,column2,......) @tabNamevarchar(2000),--需要查看的表名(即fromtable_name) @strConditionvarchar(2000)="",--查询条件(即wherecondition......)不用加where关键字 @ascColumnvarchar(100)="",--排序的字段名(即orderbycolumnasc/desc) @bitOrderTypebit=0,--排序的类型(0为升序,1为降序) @pkColumnvarchar(50)="",--主键名称 @pageSizeint=20--分页大小 AS BEGIN--存储过程开始 --该存储过程需要用到的几个变量-- DECLARE@strTempvarchar(1000) DECLARE@strSqlvarchar(4000)--该存储过程最后执行的语句 DECLARE@strOrderTypevarchar(1000)--排序类型语句(orderbycolumnasc或者orderbycolumndesc) BEGIN IF@bitOrderType=1--bitOrderType=1即执行降序 BEGIN SET@strOrderType="ORDERBY"+@ascColumn+"DESC" SET@strTemp="<(SELECTmin" END ELSE BEGIN SET@strOrderType="ORDERBY"+@ascColumn+"ASC" SET@strTemp=">(SELECTmax" END IF@currPage=1--如果是第一页 BEGIN IF@strCondition!="" SET@strSql="SELECTTOP"+STR(@pageSize)+""+@showColumn+"FROM"+@tabName+ "WHERE"+@strCondition+@strOrderType ELSE SET@strSql="SELECTTOP"+STR(@pageSize)+""+@showColumn+"FROM"+@tabName+@strOrderType END ELSE--其他页 BEGIN IF@strCondition!="" SET@strSql="SELECTTOP"+STR(@pageSize)+""+@showColumn+"FROM"+@tabName+ "WHERE"+@strCondition+"AND"+@pkColumn+@strTemp+"("+@pkColumn+")"+"FROM(SELECTTOP"+STR((@currPage-1)*@pageSize)+ ""+@pkColumn+"FROM"+@tabName+@strOrderType+")ASTabTemp)"+@strOrderType ELSE SET@strSql="SELECTTOP"+STR(@pageSize)+""+@showColumn+"FROM"+@tabName+ "WHERE"+@pkColumn+@strTemp+"("+@pkColumn+")"+"FROM(SELECTTOP"+STR((@currPage-1)*@pageSize)+""+@pkColumn+ "FROM"+@tabName+@strOrderType+")ASTabTemp)"+@strOrderType END END EXEC(@strSql) END--存储过程结束 ------------------------------------------------ GO
调用方法:
prcPageResult1,"*","TableName","","CreateDate",1,"PkID",25
上面表示,查询表TableName的所有字段,前25条记录,因为是第一页,排序字段为CreateDate,降序排列,主键是PkID。这个存储过程的功能比较强大,用在项目中非常的适用。不信您可以试试看,尤其是在百万级数据上,他的优势就显露无疑了,当然,这段代码是可以转换成MySql中的存储过程的,不过,在这里就不给大家了,你们可以自己试着转换看看。
下面的存储过程查询表的记录数:
/*---------------------------------------------- *procedurename:prcRowsCount *author:Fay *createdate:2014-07-18 */ CREATEPROCprcRowsCount @tabNamevarchar(200),--需要查询的表名 @colNamevarchar(200)="*",--需要查询的列名 @conditionvarchar(200)=""--查询条件 AS BEGIN DECLARE@strSqlvarchar(255) IF@condition="" SET@strSql="selectcount("+@colName+")from"+@tabName ELSE SET@strSql="selectcount("+@colName+")from"+@tabName+"where"+@condition EXEC(@strSql) END ------------------------------------------------ GO
还有删除记录的通用存储过程和查询单条记录的通用存储过程在这里就不奉送了,感谢提供原通用分页查询存储过程的哥们,谢谢。
相关文章
- 解决SQLServer查询结果乱码的方法(sqlserver乱码)
- Linux下如何连接SQLServer数据库(linux连接sqlserver)
- SQLServer数据库中玩转分区表(sqlserver分区表)
- SqlServer中使用约束实现安全数据管理(sqlserver约束)
- 从你身边消失卸载SQLServer(卸载 sqlserver)
- 从SQLServer中排列数据:一步步实现升序查询(升序sqlserver)
- 数据库SQLServer与达梦数据库:如何实现高效协同(sqlserver 达梦)
- 如何通过SQLserver快速创建表副本?(sqlserver表副本)
- 如何使用SQLServer管理节假日(sqlserver节假日)
- 查询基于SQLServer的联表查询技术实战(sqlserver联表)
- 位SQLServer查询结果的列名获取(sqlserver结果栏)
- 深入探索SQLServer的稳定性优势(sqlserver稳定性)
- 使用SQL Server实现稀疏列存储策略(sqlserver稀疏列)
- 使用SQLServer实现短信发送功能(sqlserver短信)
- 优化SqlServer分页查询的优化方法(sqlserver的分页)
- SQL”SQLserver加入NoSQL时代:实现数据存储的新契机“(SQLserver的No)
- 段获取数据SQLserver查询:从两个时间段获取数据(sqlserver根据两个时间)
- 数据SQLServer查询昨日数据:小白攻克难关(sqlserver查昨日)
- 快速掌握SQLServer查询数据的专业技巧(sqlserver查数据)
- SQLServer:基于数据库技术的强大工具(sqlserver是基于)
- SQLServer实现表分区——提高数据查询效率(sqlserver分区)
- 存储过程如何使用SQLServer编写专业的存储过程(sqlserver怎么写)
- 使用SQLServer实现数据合计行功能(sqlserver合计行)
- 使用SQLServer查询单条记录(sqlserver取1行)
- 存储实现高性能:使用SqlServer双网卡存储(sqlServer双网卡)
- SqlServer如何去除回车换行符(sqlserver去回车)
- 如何使用SQLServer实现分页查询(sqlserver做分页)
- SqlServer中众数的查询与分析(sqlserver 众数)
- 的使用SQLServer中游标的有效应用(sqlserver中游标)
- 使用SQLServer实现数据库分页查询(sqlserver.分页)
- MySQL与SQLServer的异同比较(mysql与sqlserver区别)