SQL 2005-2008 存储过程分页程序 ROW_NUMBER()
2011-10-13 21:34
886 查看
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: fangjun
-- Create date: 2010-9-21
-- Description: SQL 2005-2008 存储过程分页程序
-- exec pages 表名,主键,字段名,开始页码,页大小,Where条件,主键排序DESC/ASC
-- =============================================
CREATE PROCEDURE pages
(
@Tables varchar(1000), --表名
@PK varchar(100), --主键
@Fields varchar(1000) = '*', --字段名
@Pageindex int = 1, --开始页码
@PageSize int = 10, --页大小
@Filter varchar(1000) = '', --Where条件,不能为null
@Sort varchar(200) = '' --排序字段, 不能为null
)
AS
BEGIN
--------------------------
Declare @sql varchar(500);
Declare @count int;
--------------------------
If Not IsNull(@Sort,'') = ''
begin
Set @Sort = 'DESC'
end
If Not IsNull(@Filter,'') = ''
begin
Set @Filter = 'where '+@Filter
end
--------------------------
begin
set @sql = 'WITH [tempTable] AS (SELECT '+@Fields+''+
', ROW_NUMBER() OVER (ORDER BY '+@PK+' '+@Sort+') AS ''RowNumber'' '+
'FROM '+@Tables+' '+@Filter+') SELECT '+@Fields+' FROM [tempTable] WHERE '+
'RowNumber BETWEEN '+convert(varchar(20),@Pageindex)+' AND '+
convert(varchar(20),@PageSize)
end
--------------------------
Exec (@sql)
--------------------------
Print @count
END
GO
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: fangjun
-- Create date: 2010-9-21
-- Description: SQL 2005-2008 存储过程分页程序
-- exec pages 表名,主键,字段名,开始页码,页大小,Where条件,主键排序DESC/ASC
-- =============================================
CREATE PROCEDURE pages
(
@Tables varchar(1000), --表名
@PK varchar(100), --主键
@Fields varchar(1000) = '*', --字段名
@Pageindex int = 1, --开始页码
@PageSize int = 10, --页大小
@Filter varchar(1000) = '', --Where条件,不能为null
@Sort varchar(200) = '' --排序字段, 不能为null
)
AS
BEGIN
--------------------------
Declare @sql varchar(500);
Declare @count int;
--------------------------
If Not IsNull(@Sort,'') = ''
begin
Set @Sort = 'DESC'
end
If Not IsNull(@Filter,'') = ''
begin
Set @Filter = 'where '+@Filter
end
--------------------------
begin
set @sql = 'WITH [tempTable] AS (SELECT '+@Fields+''+
', ROW_NUMBER() OVER (ORDER BY '+@PK+' '+@Sort+') AS ''RowNumber'' '+
'FROM '+@Tables+' '+@Filter+') SELECT '+@Fields+' FROM [tempTable] WHERE '+
'RowNumber BETWEEN '+convert(varchar(20),@Pageindex)+' AND '+
convert(varchar(20),@PageSize)
end
--------------------------
Exec (@sql)
--------------------------
Print @count
END
GO
相关文章推荐
- Sql server 2005的分页存储过程,利用ROW_NUMBER()新特性
- Sql server 2005的分页存储过程,利用ROW_NUMBER()新特性
- SQL Server 2005 分页存储过程 row_number()
- SQL 2005 ,sql 2008. 分页存储过程
- T-SQL存储过程:ROW_NUMBER()分页
- SQL SERVER 2005 用ROW_NUMBER()创建分页存储过程
- SqlServer中使用row_number() over实现通用的分页存储过程
- SQL 2005 多表分页存储过程
- SQl 2005 存储过程分页
- SQL Server 2005-2008 ROW_NUMBER() 分页函数效率
- SQL 2005的ROW_NUMBER()实现分页的功能
- SQL2005新函数ROW_NUMBER()实现分页
- SQL 2005通用分页存储过程
- sql 2005 存储过程分页 java 代码
- SQL_ROW_NUMBER 用于分页存储
- 分页存储过程sql2005以上版本
- 利用SQL2005的row_number()重新写了个自定义分页存储过程
- SQL Server 2005中利用临时表和@@RowCount提高分页查询存储过程性能