通用分页存储过程
2010-03-28 10:13
351 查看
/*通用分页存储过程 MS SQL Server 2005*/ CREATE PROCEDURE Pagination ( @TableName VARCHAR(255), -- 表名/视图名 @SelectFields VARCHAR(1000) = '*', -- 需要返回的列 @Where VARCHAR(3000) = '1=1', -- 查询条件(注意: 不要加where) @OrderField VARCHAR(255)='', -- 排序字段 @PageSize INT = 10, -- 页尺寸 @PageIndex INT = 1, -- 当前页码(从第页开始) @RowCount INT OUTPUT -- 记录总数 ) AS BEGIN --定义变量,SQL语句 DECLARE @SQL_SELECT NVARCHAR(4000) DECLARE @SQL_COUNT NVARCHAR(4000) --统计总数据量 SET @SQL_COUNT = N'SELECT @RowCount= COUNT(*) FROM ' + @TableName + ' WHERE ' + @WHERE EXEC SP_EXECUTESQL @SQL_COUNT,N'@RowCount INT OUTPUT',@RowCount=@RowCount OUTPUT --执行分页查询 SET @SQL_SELECT = 'SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY ' + @OrderField + ') AS RowNumber,' + @SelectFields + ' FROM ' + @TableName + ' WHERE ' + @Where + ' )AS TempTable WHERE RowNumber > ' + CONVERT(VARCHAR,(@PageIndex - 1) * @PageSize) + 'AND RowNumber <= ' + CONVERT(VARCHAR,@PageIndex * @PageSize) EXEC (@SQL_SELECT) END /*通用分页存储过程 MS SQL Server 2000*/ CREATE PROCEDURE Pagination ( @TableName VARCHAR(255), -- 表名/视图名 @SelectFields VARCHAR(1000) = '*', -- 需要返回的列 @PKField VARCHAR(255), -- 主键列 @Where VARCHAR(3000) = '1=1', -- 查询条件(注意: 不要加where) @OrderField VARCHAR(255)='', -- 排序字段 @PageSize INT = 10, -- 页尺寸 @PageIndex INT = 1, -- 当前页码(从第1页开始) @RowCount INT OUTPUT -- 记录总数 ) AS BEGIN --定义变量,SQL语句 DECLARE @SQL_SELECT NVARCHAR(4000) DECLARE @SQL_COUNT NVARCHAR(4000) --统计总数据量 SET @SQL_COUNT = N'SELECT @RC = COUNT(*) FROM ' + @TableName + ' WHERE ' + @WHERE EXEC SP_EXECUTESQL @SQL_COUNT,N'@RC INT OUTPUT',@RC=@RowCount OUTPUT --执行分页查询 SET @SQL_SELECT = 'SELECT TOP ' + CONVERT(VARCHAR,@PageSize) + ' ' + @SelectFields + ' FROM ' + @TableName + ' WHERE ' + @Where + ' AND ' + @PKField + ' NOT IN ( SELECT TOP ' + CONVERT(VARCHAR,(@PageIndex-1)*@PageSize) + ' '+ @PKField + ' FROM ' + @TableName + ' WHERE ' + @Where + ' ORDER BY ' + @OrderField + ' ) ORDER BY '+ @OrderField EXEC (@SQL_SELECT) END
相关文章推荐
- 实现千万级数据的分页通用存储过程
- ( 转 ) 实现千万级数据的分页的通用存储过程
- 通用高效分页存储过程代码
- 原创:SQL Server的通用分页存储过程,未使用游标,速度更快!
- Oracle通用分页存储过程和AspNetPage结合
- 通用存储过程.分页存储过程
- mysql通用分页存储过程
- 通用分页存储过程
- 存储过程大数据通用高效分页(不带条件和排序)
- 通用存储过程.分页存储过程
- 通用数据库存储过程代码--高效分页存储过程
- -- 临时表缓存实现的通用分页存储过程
- 通用高效分页存储过程代码
- java+oracle的存储过程开发案例(包含了oracle存储过程的通用分页方法、java的工厂类)
- 通用分页存储过程3
- SQL Server 2000通用分页查询存储过程(可指定返回字段,查询条件)
- [MSSQL]SQL通用存储过程分页,支持多表联合
- SQL 高效通用分页存储过程(双向检索)
- 分页存储过程 SQL2000以上通用
- 字符串缓存实现的通用分页存储过程