sql 存储过程分页代码 支持亿万庞大数据量

2022-05-24 0 1,181

复制代码 代码如下:

CREATE PROCEDURE page

@tblName varchar(255), — 表名

@strGetFields varchar(1000) = ‘*’, — 需要返回的列

@fldName varchar(255)=’id’, — 排序的字段名

@PageSize int = 10, — 页尺寸

@PageIndex int = 1, — 页码

@doCount bit = 0, — 返回记录总数, 非 0 值则返回

@OrderType bit = 0, — 设置排序类型, 非 0 值则降序 0:asc 1:desc

@strWhere varchar(1500) = ”, — 查询条件 (注意: 不要加 where)

@ID nvarchar(50)=’id’ –主表的列。。最好是主键

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 ‘+@strWhere

else

set @strSQL = ‘select count(*) as Total from ‘ + @tblName + ”

end

–以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else begin

if @OrderType != 0 begin

set @strTmp = ‘<(select min’

set @strOrder = ‘ order by ‘ + @fldName +’ desc’

–如果@OrderType不是0,就执行降序,这句很重要!

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) +’ ‘+@strGetFields+ ‘ from ‘ + @tblName + ‘ where ‘ + @strWhere + ‘ ‘ + @strOrder

else

set @strSQL = ‘select top ‘ + str(@PageSize) +’ ‘+@strGetFields+ ‘ from ‘+ @tblName + ‘ ‘+ @strOrder

–如果是第一页就执行以上代码,这样会加快执行速度

end

else begin

–以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = ‘select top ‘ + str(@PageSize) +’ ‘+@strGetFields+ ‘ from ‘

+ @tblName + ‘ where ‘ + @fldName + ‘ ‘ + @strTmp + ‘( ‘+ @ID + ‘ ) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ‘+ @fldName + ‘ from ‘ + @tblName + @strOrder + ‘) as tblTmp)’+ @strOrder

if @strWhere != ”

set @strSQL = ‘select top ‘ + str(@PageSize) +’ ‘+@strGetFields+ ‘ from ‘

+ @tblName + ‘ where ‘ + @fldName + ‘ ‘ + @strTmp + ‘(‘

+ @ID + ‘) from (select top ‘ + str((@PageIndex-1)*@PageSize) + ‘ ‘

+ @fldName + ‘ from ‘ + @tblName + ‘ where ‘ + @strWhere + ‘ ‘

+ @strOrder + ‘) as tblTmp) and ‘ + @strWhere + ‘ ‘ + @strOrder

end

end

exec (@strSQL)

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql sql 存储过程分页代码 支持亿万庞大数据量 https://www.niceym.com/60352.html