sqlserver带四种判断的手动存储过程分页分页
发布时间:2020-12-12 13:31:41 所属栏目:MsSql教程 来源:网络整理
导读:ALTER PROCEDURE pr_tblAD_getAdsByParams ( @pageNo int, @pageSize int, @name varchar(50), @classId int, @pageCount int output ) AS declare @sqlTotal nvarchar(1000) declare @sqlGet nvarchar(1000) declare @recordCount int -- 标题为空,分类为
ALTER PROCEDURE pr_tblAD_getAdsByParams ( @pageNo int, @pageSize int, @name varchar(50), @classId int, @pageCount int output ) AS declare @sqlTotal nvarchar(1000) declare @sqlGet nvarchar(1000) declare @recordCount int -- 标题为空,分类为空 if(@name = '' and @classId=-1) begin -- 统计总记录数 select @recordCount=count(*) from tblAD -- 返回当前页数据 set @sqlGet = 'select top '+ str(@pageSize)+' * from tblAd where adId not in (select top '+str((@pageNo-1)*@pageSize)+ ' adid from tblAd)' end -- 标题、分类都不为空 if(@name <> '' and @classId <> -1) begin -- 统计总记录数 set @sqlTotal = N'select @recordCount=COUNT(*) from tblAd where name like ''%'+@name+'%'' and classId='+str(@classId) exec sp_executesql @sqlTotal,N'@recordCount int output',@recordCount output -- 返回当前页数据 set @sqlGet = 'select top '+ str(@pageSize)+' * from tblAd where name like ''%'+@name+'%'' and classId='+str(@classId)+' and adId not in (select top '+str((@pageNo-1)*@pageSize)+ ' adid from tblAd where name like ''%'+@name+'%'' and classId='+str(@classId)+')' end -- 标题为空,分类不为空 if(@name='' and @classId<>-1) begin -- 统计总记录数 set @sqlTotal = N'select @recordCount=COUNT(*) from tblAd where classId='+str(@classId) exec sp_executesql @sqlTotal,@recordCount output -- 返回当前页数据 set @sqlGet = 'select top '+ str(@pageSize)+' * from tblAd where classId='+str(@classId)+' and adId not in (select top '+str((@pageNo-1)*@pageSize)+ ' adid from tblAd where name like ''%'+@name+'%'' and classId='+str(@classId)+')' end -- 标题不为空,分类为空 if(@name<>'' and @classId=-1) begin -- 统计总记录数 set @sqlTotal = N'select @recordCount=COUNT(*) from tblAd where name like ''%'+@name+'%''' exec sp_executesql @sqlTotal,@recordCount output -- 返回当前页数据 set @sqlGet = 'select top '+ str(@pageSize)+' * from tblAd where name like ''%'+@name+'%'' and adId not in (select top '+str((@pageNo-1)*@pageSize)+ ' adid from tblAd where name like ''%'+@name+'%'')' end -- 计算总页数 if(@recordCount%@pageSize=0) set @pageCount=@recordCount/@pageSize else set @pageCount=@recordCount/@pageSize+1 -- 返回当前页数据 exec (@sqlGet) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |