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)
-- 返回当前页数据 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)
相关文章推荐
- oracle update语句卡死现象(select等正常) 解决方案
- ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
- SQL 2005导入EXCEL
- mysql_note
- SQL SERVER利用BCP命令在命令行下导出数据到csv文件中
- MS SQL Server 获得所有表的表记录,和使用空间的SQL
- Microsoft SQL Server 管理 (常用管理及维护命令)
- Oracle数据库--删除归档日志
- DISCUZ 论坛管理员密码忘记,如何通过数据库的重新设置密码
- hibernate连接SQL server 2008数据库取数据。
- Mac下安装配置MongoDB
- oracle中truncate table与delete的区别
- java操作保存图片到oracle数据库及获取图片到页面显示
- jsp页面通过java调用oracle blob字段显示图片
- 使用 Redis 来存储 Apache Tomcat 7 的 Session
- sqlserver2008 复制,镜像,日志传输及故障转移集群区别
- Powerdesigner逆向mysql数据库生成E-R图的那些事
- Error Code: 1064 – You have an error in your SQL syntax解决几个方法
- 插入数据库是出现乱码的参考解决方案:mysql
- mongodb 复制数据库和表