通用分页存储过程,SQL Server的通用分页存储过程 未使用

1、确定存储的输入参数: 1)SQL脚本,该参数接收完整的、正确的SQL检索文本,可将原应用中写好的SQL脚本直接传入 2)每页的数据容量,就是一页有多少条数据 3)当前页码 2、确定分页机制: 1)执行传入的SQL脚本,并将结果生成临时表 2)修改临时表的结构,增加标识列字段 3)根据标识列字段,计算出指定页码内的记录范围,并返回 4)返回总数据条数,用于客户端进行分页显示 根据以上的思路,编写出以下通用的分页存储过程:
复制代码代码如下:
[code] --// ============================ --// SQL Server通用分页存储过程 --// Author : netwild --// date : 2010/07/22 --// Email : [email protected] --// QQ : 52100641(网无忌) --// ============================ SET QUOTED_IDENTIFIER _disibledevent=>declare @subIndex int set @subIndex = charindex('from',@sqlQuery) if (@subIndex > 0) begin --//带FROM的标准检索语句 declare @sqlQuery1 varchar(2000) declare @sqlQuery2 varchar(2000) set @sqlQuery1 = substring(@sqlQuery,1,@subIndex - 1) set @sqlQuery2 = substring(@sqlQuery,@subIndex,len(@sqlQuery)) set @sqlQuery = @sqlQuery1 + ',IDENTITY(numeric,1,1) as ID1516 into ' + @tmpTableName + ' ' + @sqlQuery2 end else --//不带FROM的表名 begin set @sqlQuery = 'select *,IDENTITY(numeric,1,1) as ID1516 into ' + @tmpTableName + ' from' + @sqlQuery end exec(@sqlQuery) --//建立并初始化临时表数据 declare @indexStart varchar(20),@indexEnd varchar(20) set @indexStart = cast((@pageIndex-1)*@pageSize+1 as varchar(20)) --//数据起始行ID set @indexEnd = cast(@pageIndex * @pageSize as varchar(20)) --//数据结束行ID exec('select * from ' + @tmpTableName + ' where ID1516 between ' + @indexStart + ' and ' + @indexEnd) --//检索该页数据 exec('select max(ID1516) as recordCount from ' + @tmpTableName) --//提取总条数 exec('drop table ' + @tmpTableName) --//删除临时表 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
Tags:  sql分页存储 通用分页存储过程

延伸阅读

最新评论

发表评论