MS SQL 数据分页(通用)

MS SQL 数据分页(通用),第1张

概述MS SQL 数据分页(通用)

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

CREATE PROCEDURE [dbo].[sp_GetListByPageAndfileds]( 	@pageSize  int,/**  每页数据量        **/   	@currentPage int = 1,/**  当前页,默认为为1 **/       	@fIElds   varchar(2000),/**  查询字段,可以用 * 表示所有 **/     	@tablename  varchar(max),/**  表名,或者为查询得出的 子表 ,子表查询sql需要括号括起来,并指定新表名  **/     	@orderString varchar(1000),/**  排序字段 + asc/desc   **/       	@whereString varchar(1000)  /**  不包含‘where’的字符串 **/      )	AS	BEGIN		 DECLARE @sql varchar(2000)		 DECLARE @strOrder varchar(2000)		 DECLARE @strWhere varchar(2000)		 declare @recordcount int 		 declare @convertorderstr varchar(2000)		declare @countsql nvarchar(4000)		declare @totalpage int		 set @strOrder = REPLACE(RTRIM(LTRIM(@orderString)),'order by','')		 if @strOrder != ''		  set @strOrder = ' order by ' + @strOrder		 else		  set @strOrder = ' order by ID DESC'		set @strOrder=lower(@strOrder)		set @convertorderstr=replace(@strOrder,'desc','d_e_s_c')		set @convertorderstr=replace(@convertorderstr,'asc','desc')		set @convertorderstr=replace(@convertorderstr,'d_e_s_c','asc')		 set @strWhere = REPLACE(RTRIM(LTRIM(@whereString)),'where','')		 if @strWhere != ''		  set @strWhere = ' where ' + @strWhere		set @countsql='select @a=count(*) from ' + @tablename + @strWhere		exec  sp_executesql @countsql,N'@a int output',@recordcount output 		 if @pageSize = 0		  set @sql = 'select ' + @fIElds + ' from ' + @tablename + @strWhere + @strOrder		 else		 begin				if @recordcount%@pageSize=0					set @[email protected]/@pageSize				else					set @[email protected]/@pageSize+1			if @totalpage <=1			 set @currentPage=1 			 if @totalpage <@currentPage 			  set @[email protected]		  if @currentPage = 1		   set @sql = 'select top ' + Str(@pageSize)+' '+ @fIElds + ' from ' + @tablename + @strWhere + @strOrder		  else			if (@currentPage - 1) * @pageSize > @recordcount / 2				set @sql = 'select top ' + str(@pageSize) + ' * from (select top ' + str((@recordcount - (@currentPage - 1) * @pageSize)) + ' ' + @fIElds + ' from ' + @tablename + @strWhere + @convertorderstr + ') as t1  ' + @strOrder			else				set @sql = 'select * from(select top ' + str(@pageSize) + ' * from (select top ' + str(@pageSize * @currentPage) + ' ' + @fIElds + ' from ' + @tablename + @strWhere + @strOrder + ') as t1  ' + @convertorderstr + ') as t2  ' + @strOrder			end			set @sql = @sql + '; select '+str(@recordcount)+' as cnt'		 exec(@sql)	END

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的MS SQL 数据分页(通用)全部内容,希望文章能够帮你解决MS SQL 数据分页(通用)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存