微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver带四种判断的手动存储过程分页分页

 
 
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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐