1:没有实现数据总数(有数据总数请看文章底部)
/*
分页查询存储过程
只能用于 MS SQL SERVER 2005及以上版本
本存储过程没有返回总数据数。基于性能考虑
*/
ALTER PROC GetRecodePaging
(
@pageSize int = 20--分页大小
,@pageIndex int = 1--当前第几页
,@returnFields varchar(200) --返回字段
,@tableName varchar(30) --查询表名,可以是视图
,@stringWhere varchar(200) --查询条件
,@order varchar(100) = ' [Id] DESC'--排序
)
AS
BEGIN
DECLARE @strTmp nvarchar(4000)
DECLARE @from int
DECLARE @to int
set @from = (@pageIndex -1) * @pageSize + 1
--print @from
set @to = (@pageIndex -1) * @pageSize + @pageSize
--print @to
SET @strTmp = '
WITH tmp AS
(
SELECT ROW_NUMBER() OVER (ORDER BY ' + @order + ') AS Row ,' + @returnFields + '
FROM ' + @tableName + '
WHERE ' + @stringWhere + '
)
SELECT ' + @returnFields + ' FROM tmp
WHERE [Row] BETWEEN ' + Convert(varchar(10),@from) + ' AND ' + Convert(varchar(10),@to) + '
ORDER BY ' + @order
--print @strTmp
exec sp_executesql @strTmp
END
2:实现了数据总数
/*
分页查询存储过程
只能用于 MS SQL SERVER 2005及以上版本
*/
CREATE PROC [dbo].[GetRecodePaging]
(
@pageSize int = 20--分页大小
,@pageIndex int = 1--当前页是第几页
,@returnFields varchar(200) --返回字段
,@tableName varchar(30) --查询表名,可以是视图
,@stringWhere varchar(200) --查询条件
,@order varchar(100) = ' [Id] DESC'--排序
,@TotalCount int output --数据总数
)
AS
BEGIN
DECLARE @ParmDefinition nvarchar(500); --为输了数据总数定义的参数
DECLARE @strTmp nvarchar(4000) --构造sql,输出数据
DECLARE @strCount nvarchar(2000) --构造sql,输出数据总数
DECLARE @from int
DECLARE @to int
set @strCount = 'SELECT @out = COUNT(1) FROM ' + @tableName + ' WHERE ' + @stringWhere
SET @ParmDefinition = N'@out varchar(10) OUTPUT'
--查询数据总数
exec sp_executesql @strCount,@ParmDefinition,@out = @TotalCount OUTPUT;
set @from = (@pageIndex -1) * @pageSize + 1
--print @from
set @to = (@pageIndex -1) * @pageSize + @pageSize
--print @to
SET @strTmp = '
WITH tmp AS
(
SELECT ROW_NUMBER() OVER (ORDER BY ' + @order + ') AS Row ,' + @returnFields + '
FROM ' + @tableName + '
WHERE ' + @stringWhere + '
)
SELECT ' + @returnFields + ' FROM tmp
WHERE [Row] BETWEEN ' + Convert(varchar(10),@from) + ' AND ' + Convert(varchar(10),@to) + '
ORDER BY ' + @order
--print @strTmp
exec sp_executesql @strTmp
END
分页查询存储过程
最新推荐文章于 2019-08-08 17:16:15 发布