SQL 通用分页 高手请帮忙修正 20feixianxxx]

发布时间:2017-2-23 10:38:37 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SQL 通用分页 高手请帮忙修正 20feixianxxx]",主要涉及到SQL 通用分页 高手请帮忙修正 20feixianxxx]方面的内容,对于SQL 通用分页 高手请帮忙修正 20feixianxxx]感兴趣的同学可以参考一下。

CREATE PROCEDURE pagination3 @tblName varchar(255), -- 表名 @strGetFields varchar(1000) = ''*'', -- 需要返回的列 @fldName varchar(255)='''', -- 排序的字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @doCount bit = 0, -- 返回记录总数, 非 0 值则返回 @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 @strWhere varchar(1500) = '''' -- 查询条件 (注意: 不要加 where) AS declare @strSQL varchar(5000) -- 主语句 declare @strTmp varchar(110) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 if @doCount != 0 begin if @strWhere !='''' set @strSQL = "select count(*) as Total from [" + @tblName + "] where "[email protected] else set @strSQL = "select count(*) as Total from [" + @tblName + "]" end [email protected][email protected]情况: else begin if @OrderType != 0 begin set @strTmp = "<(select min" set @strOrder = " order by [" + @fldName +"] desc"[email protected],就执行降序,这句很重要! end else begin set @strTmp = ">(select max" set @strOrder = " order by [" + @fldName +"] asc" end if @PageIndex = 1 begin if @strWhere != '''' set @strSQL = "select top " + str(@PageSize) +" "[email protected]+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder else set @strSQL = "select top " + str(@PageSize) +" "[email protected]+ " from ["+ @tblName + "] "+ @strOrder如果是第一页就执行以上代码,这样会加快执行速度 end else [email protected] set @strSQL = "select top " + str(@PageSize) +" "[email protected]+ " from [" + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["+ @fldName + "]) from (select top " + str((@PageIndex-1)[email protected]) + " ["+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder if @strWhere != '''' set @strSQL = "select top " + str(@PageSize) +" "[email protected]+ " from [" + @tblName + "] where [" + @fldName + "]" + @strTmp + "([" + @fldName + "]) from (select top " + str((@PageIndex-1)[email protected]) + " [" + @fldName + "] from [" + @tblName + "] where " + @strWhere + " " + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder end end exec (@strSQL) GO 引用 http://sh10.cn/bbs/dispbbs.asp?boardID=12&ID=20071&page=1

CREATE PROCEDURE pagination3 @tblName varchar(255), -- 表名 @strGetFields varchar(1000) = '*', -- 需要返回的列 @fldName varchar(255)='', -- 排序的字段名 @PageSize int = 10, -- 页尺寸 @PageIndex int = 1, -- 页码 @doCount bit = 0, -- 返回记录总数, 非 0 值则返回 @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序 @strWhere varchar(1500) = '''' -- 查询条件 (注意: 不要加 where) AS declare @strSQL varchar(5000) -- 主语句 declare @strTmp varchar(110) -- 临时变量 declare @strOrder varchar(400) -- 排序类型 if @doCount != 0 begin if @strWhere !='''' set @strSQL = 'select count(*) as Total from [' + @tblName + '] where [email protected] else set @strSQL = 'select count(*) as Total from [' + @tblName + ']' end  else begin if @OrderType != 0 begin set @strTmp = '<(select min' set @strOrder = ' order by [' + @fldName +'] [email protected],就执行降序,这句很重要! end else begin set @strTmp = '>(select max' set @strOrder = ' order by [' + @fldName +'] asc' end if @PageIndex = 1 begin if @strWhere != '''' set @strSQL = 'select top ' + str(@PageSize) +' [email protected]+ ' from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder else set @strSQL = 'select top ' + str(@PageSize) +' [email protected]+ ' from ['+ @tblName + '] '+ @strOrder --如果是第一页就执行以上代码,这样会加快执行速度 end else [email protected] set @strSQL = 'select top ' + str(@PageSize) +' [email protected]+ ' from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)[email protected]) + ' ['+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'+ @strOrder if @strWhere != '''' set @strSQL = 'select top ' + str(@PageSize) +' [email protected]+ ' from [' + @tblName + '] where [' + @fldName + ']' + @strTmp + '([' + @fldName + ']) from (select top ' + str((@PageIndex-1)[email protected]) + ' [' + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder end end exec (@strSQL) GO 把" 换成' 就OK了

学习中

前一段时间写的T-SQL,通用分页,经过200多万数据测试,通用、稳定 http://fnsword.com/bak/Pagination.rar Pagination.sql    分页T-SQL Dept.sql          产出测试表 sql_page.sql      分页测试

谢fnsword() ( ) 下下来看看

怎么打开的是乱码,2楼主能否给个Q,发给我啊?

我也想要啊,我的QQ 591361180

路过,学习 留个记号

顶一下,学习中

mssql 2005的通用存储过程: create procedure [dbo].[Pagination]( @pagesize int, -- 页大小 @pageindex int, -- 当前页 @identity varchar(100), -- 唯一列 @cells varchar(1000)='*', -- 显示列 @tables varchar(1000), -- 表名称 @condition varchar(2000)=NULL, -- 查询条件 @top int = -1, --  @orderby varchar(200)=NULL -- 排序 desc ) as set nocount on declare @rowcount int; declare @SQL nvarchar(4000); set @SQL = N'select @rowcount = count(0) from ' + @tables + ' where 1=1 ';     if(@condition IS NOT NULL) set @SQL = @SQL + @condition; exec sp_executesql @SQL,[email protected] int output',@rowcount output; if(@top != -1 and @rowcount > @top) set @rowcount = @top;     set @SQL = N'declare @___lb int;';     set @SQL = @SQL + N'declare @___ub int;';     set @SQL = @SQL + N'set @___lb=(@pageindex-1)[email protected];';     set @SQL = @SQL + N'set @___ub=@[email protected];';     set @SQL = @SQL + N'set ROWCOUNT @___ub;'; set @SQL = @SQL + N'with ___t as (select *'; if(@orderby is not null and @orderby != '') set @SQL = @SQL + N',row_number() over(order by ' + @orderby + ',' + @identity + ' asc) as ___p from ('; else set @SQL = @SQL + N',row_number() over(order by ' + @identity + ' asc) as ___p from ('; if(@top != -1) set @SQL = @SQL + N'select top ' + cast(@top as nvarchar(10)) + ' '; else set @SQL = @SQL + N'select '; if(@cells IS NOT NULL) set @SQL = @SQL + @cells; else set @SQL = @SQL + N'*'; set @SQL = @SQL + ' from ' + @tables + ' where 1=1'; if(@condition IS NOT NULL and @condition != '') set @SQL = @SQL + ' ' + @condition; set @SQL = @SQL + ') as ___q) select * from ___t where ___p>@___lb and ___p<=@___ub;'; exec sp_executesql @SQL,[email protected] int,@pageindex int',@pagesize = @pagesize,@pageindex = @pageindex; return @rowcount; set nocount off

发布两个大数据集通用分页存储过程,欢迎大家和我联系共同探讨改进方法,同时我也会及时将更新内容发布在下面的网址 http://www.thinksea.com/thinksea/show.aspx?id=92db4c46-2216-4b24-a72b-aa27fcf82e50

mark~ 同样得问题得以解决,感谢!

mark~

终于找到

mark

不知,帮顶

上一篇:大家推荐本关于SQL Server 2005 SSIS的书籍!!! 30分,无满意结帖,结帖人sunbird69]
下一篇:大量数据的模糊搜索问题如何解决 10feixianxxx]

相关文章

相关评论