看看是不是存储过程中那个页面变量算法错了啊 看看这个可以不CREATE procedure pagination @str_sql varchar(1000) = '*', -- 执行的SQL 不含Order by 内容
@str_orderfield varchar(255)='''', -- 排序的字段名
@page_size int = 10, -- 页大小
@page_index int = 0, -- 页码
@order_type int, -- 设置排序类型, 非 -1 值则降序
@total_count int output -- 返回记录总数, 非 0 值则返回
as---------------------
-- 获取指定页的数据--
---------------------
declare @strsql varchar(5000) -- 主语句
declare @strtmp varchar(5000) -- 临时变量
declare @strorder varchar(400) -- 排序字串
declare @cruRow int -- 当前行号
--执行总数统计
exec getRowCount @str_sql,@total_count output
set @strtmp = ' select * from ' +
' (select top ' + convert(varchar(10),@page_size) + ' * from ' +
' (select top ' + convert(varchar(10),(@page_index + 1) * @page_size) +' * from '+ -- N+1页
' ('+ @str_sql +') Src '--排序方向
if @order_type !=0
begin
set @strsql= @strtmp +
' order by @str_orderfield asc) a ' +
' order by @str_orderfield desc)b' +
' order by @str_orderfield asc'
end
else
begin
set @strsql= @strtmp +
' order by @str_orderfield desc) a ' +
' order by @str_orderfieldasc)b' +
' order by @str_orderfield desc'
endexec (@strsql)GO---------------------------------------------------------------------------- 2.分页存储过程执行中用到的行数统计create procedure getRowCount
@sql nvarchar(2000),
@count int output
as
begin--------------------
-- 获取数据总行数 --
-------------------- declare @tmpsql nvarchar(2000)
set @tmpsql='select @count=count(*) from ('+ @sql +') a' execute sp_executesql @tmpsql,N'@count int output',@count output
endGO
@str_orderfield varchar(255)='''', -- 排序的字段名
@page_size int = 10, -- 页大小
@page_index int = 0, -- 页码
@order_type int, -- 设置排序类型, 非 -1 值则降序
@total_count int output -- 返回记录总数, 非 0 值则返回
as---------------------
-- 获取指定页的数据--
---------------------
declare @strsql varchar(5000) -- 主语句
declare @strtmp varchar(5000) -- 临时变量
declare @strorder varchar(400) -- 排序字串
declare @cruRow int -- 当前行号
--执行总数统计
exec getRowCount @str_sql,@total_count output
set @strtmp = ' select * from ' +
' (select top ' + convert(varchar(10),@page_size) + ' * from ' +
' (select top ' + convert(varchar(10),(@page_index + 1) * @page_size) +' * from '+ -- N+1页
' ('+ @str_sql +') Src '--排序方向
if @order_type !=0
begin
set @strsql= @strtmp +
' order by @str_orderfield asc) a ' +
' order by @str_orderfield desc)b' +
' order by @str_orderfield asc'
end
else
begin
set @strsql= @strtmp +
' order by @str_orderfield desc) a ' +
' order by @str_orderfieldasc)b' +
' order by @str_orderfield desc'
endexec (@strsql)GO---------------------------------------------------------------------------- 2.分页存储过程执行中用到的行数统计create procedure getRowCount
@sql nvarchar(2000),
@count int output
as
begin--------------------
-- 获取数据总行数 --
-------------------- declare @tmpsql nvarchar(2000)
set @tmpsql='select @count=count(*) from ('+ @sql +') a' execute sp_executesql @tmpsql,N'@count int output',@count output
endGO
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货