SqlServer中使用row_number() over实现通用的分页存储过程
2013-11-27 21:02
841 查看
--通用的分页存储过程
create procedure sp_pager
(
@Sql nvarchar(4000), --要分页的sql语句
@CurrentPageNo int, --当前页面索引
@PageSize int, --每一页要显示的页数
@TotalNum int output --数据的总条数 (输出参数)
)
as
declare @sqlcmd varchar(8000)
--查询数据
set @sqlcmd = 'select * from (' + @Sql + ') a where RowIndex between ' + convert(nvarchar,(@CurrentPageNo-1) * @PageSize + 1) + ' and ' + convert(varchar,@CurrentPageNo * @PageSize)
exec(@sqlcmd)
print (@sqlCmd)
--求记录总数
create table tempTable(num int)
insert into tempTable exec('select count(*) from (' + @Sql + ') a')
select @TotalNum=(select * from tempTable)
drop table tempTable
go
--=========================================测试存储过程
declare @Sql varchar(5000)
declare @CurrentPageNo int
declare @PageSize int
declare @TotalNum int
set @CurrentPageNo = 2
set @PageSize = 4
set @Sql=' select products.PID,products.PName,products.MarketPrice,productDispose.ShopPrice,row_number() over (order by products.PID) as RowIndex from ProductsDisposeInfo productDispose inner join ProductsInfo products on productDispose.PID=products.PID'
exec sp_pager @Sql,@CurrentPageNo,@PageSize,@TotalNum output
print @TotalNum
create procedure sp_pager
(
@Sql nvarchar(4000), --要分页的sql语句
@CurrentPageNo int, --当前页面索引
@PageSize int, --每一页要显示的页数
@TotalNum int output --数据的总条数 (输出参数)
)
as
declare @sqlcmd varchar(8000)
--查询数据
set @sqlcmd = 'select * from (' + @Sql + ') a where RowIndex between ' + convert(nvarchar,(@CurrentPageNo-1) * @PageSize + 1) + ' and ' + convert(varchar,@CurrentPageNo * @PageSize)
exec(@sqlcmd)
print (@sqlCmd)
--求记录总数
create table tempTable(num int)
insert into tempTable exec('select count(*) from (' + @Sql + ') a')
select @TotalNum=(select * from tempTable)
drop table tempTable
go
--=========================================测试存储过程
declare @Sql varchar(5000)
declare @CurrentPageNo int
declare @PageSize int
declare @TotalNum int
set @CurrentPageNo = 2
set @PageSize = 4
set @Sql=' select products.PID,products.PName,products.MarketPrice,productDispose.ShopPrice,row_number() over (order by products.PID) as RowIndex from ProductsDisposeInfo productDispose inner join ProductsInfo products on productDispose.PID=products.PID'
exec sp_pager @Sql,@CurrentPageNo,@PageSize,@TotalNum output
print @TotalNum
相关文章推荐
- sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)
- 使用vs2005的rowNumber对数据实现分页的存储过程。
- sqlserver 高效分页的存储过程 基于ROW_NUMBER()
- 使用ROW_NUMBER()的分页存储过程
- 一个通用的分页存储过程实现-SqlServer(附上sql源码,一键执行即刻搭建运行环境)
- sqlserver2005使用row_number() over分页的实现方法
- SQL 使用系统存储过程实现的通用分页存储过程
- jquery.pagination.js 分页存储过程--基于ROW_NUMBER() OVER()分页
- SQL Server2005使用ROW_NUMBER() OVER实现按分组查询Count()数量排序并分页
- 使用系统存储过程实现的通用分页存储过程.sql
- 使用系统存储过程实现的通用分页存储过程
- SQL Server:使用系统存储过程实现的通用分页存储过程
- 一个基于ROW_NUMBER()的通用分页存储过程代码
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
- 使用ROW_NUMBER()的分页存储过程
- 使用ROW_NUMBER()的分页存储过程
- 使用系统存储过程实现的通用分页存储过程
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
- 一个基于ROW_NUMBER()的通用分页存储过程代码
- 使用Row_Number的分页存储过程