您的位置:首页 > 数据库

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

2014-03-21 13:31 561 查看
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,N'@recordCount int output',@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,N'@recordCount int output',@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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: