sqlserver 2005 中的分页存储过程
2009-07-23 16:19
429 查看
可以排序的存储过程,适用于sqlserver2005 ,sqlserver2008。。
写的很匆忙。。。还有很多地方可以优化。。。。
Create PROCEDURE [dbo].[pagination]
-- Add the parameters for the stored procedure here
@TableName nvarchar(200), ----要显示的表或多个表的连接
@FieldName nvarchar(500) = '*', ----要显示的字段列表
@FieldSort nvarchar(200) = '', ----排序字段列表或条件
@PageSize INT = 10, ----每页显示的记录个数
@PageIndex INT = 1, ----要显示那一页的记录
//@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@Condition varchar(1500)='' -- 查询条件(注意: 不要加where)
AS
declare @strSQL varchar(5000) -- 主语句
declare @rowstart varchar(50) -- 主语句
declare @rowend varchar(50) -- 主语句
BEGIN
set @rowstart = str(@pageSize*(@pageIndex-1))
set @rowend = str(@pageSize*@pageIndex)
if @FieldSort !=''
if @OrderType =0
if @Condition !=''
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' asc,ID desc) as rowNum from '+@TableName+ ' where ' + @Condition+')'
else
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' asc,ID desc) as rowNum from '+@TableName+')'
else
if @Condition !=''
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' desc,ID desc) as rowNum from '+@TableName+ ' where '+@Condition+')'
else
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' desc,ID desc) as rowNum from '+@TableName+')'
else
if @Condition!=''
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by ID) as rowNum from '+@TableName +' where '+@Condition +')'
else
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by ID) as rowNum from '+@TableName+')'
set @strSQL=@strSQL + ' QueryTable where rowNum between '+@rowstart+' and '+ @rowend
exec (@strSQL)
END
写的很匆忙。。。还有很多地方可以优化。。。。
Create PROCEDURE [dbo].[pagination]
-- Add the parameters for the stored procedure here
@TableName nvarchar(200), ----要显示的表或多个表的连接
@FieldName nvarchar(500) = '*', ----要显示的字段列表
@FieldSort nvarchar(200) = '', ----排序字段列表或条件
@PageSize INT = 10, ----每页显示的记录个数
@PageIndex INT = 1, ----要显示那一页的记录
//@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@Condition varchar(1500)='' -- 查询条件(注意: 不要加where)
AS
declare @strSQL varchar(5000) -- 主语句
declare @rowstart varchar(50) -- 主语句
declare @rowend varchar(50) -- 主语句
BEGIN
set @rowstart = str(@pageSize*(@pageIndex-1))
set @rowend = str(@pageSize*@pageIndex)
if @FieldSort !=''
if @OrderType =0
if @Condition !=''
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' asc,ID desc) as rowNum from '+@TableName+ ' where ' + @Condition+')'
else
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' asc,ID desc) as rowNum from '+@TableName+')'
else
if @Condition !=''
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' desc,ID desc) as rowNum from '+@TableName+ ' where '+@Condition+')'
else
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by '+@FieldSort+' desc,ID desc) as rowNum from '+@TableName+')'
else
if @Condition!=''
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by ID) as rowNum from '+@TableName +' where '+@Condition +')'
else
set @strSQL='SELECT * FROM (select *,ROW_NUMBER() Over(order by ID) as rowNum from '+@TableName+')'
set @strSQL=@strSQL + ' QueryTable where rowNum between '+@rowstart+' and '+ @rowend
exec (@strSQL)
END
相关文章推荐
- SQLServer 2005通用分页存储过程
- SqlServer 2000、2005分页存储过程整理第1/3页
- sqlserver 高效分页的存储过程 基于ROW_NUMBER()
- 存储过程的创建及使用(sqlserver 2005)
- 【转】最通用的分页存储过程SqlServer
- SQL 2005 分页存储过程
- 分页存储过程(二)在sqlserver中返回更加准确的分页结果
- SqlServer通用的分页存储过程
- sql2000分页存储过程 对照 2005分页存储过程
- SQLSERVER 通用分页存储过程
- 分页存储过程2005
- sqlserver 使用游标存储过程分页
- SqlServer 分页的存储过程
- 自己修改一个别人的sql2005通用存储过程分页
- SQLServer千万数量级分页公共存储过程
- [导入]SQLSERVER海量分页存储过程
- 【转】SqlServer 数据分页的存储过程
- SQL 2005-2008 存储过程分页程序 ROW_NUMBER()
- SqlServer 存储过程分页