数据库分页
declare @PageSize int,@PageIndex int,@tmpSql nvarchar(2048)
select @PageSize=10,@PageIndex=3
set @tmpSql='select top '+cast(@PageSize as nvarchar(20))+'* from tbl_表名
where d_id>(select max(d_id) from (
select top '+convert(nvarchar(20),(@pagesize-1)*@pagesize)+'d_id from tbl_表名 order by d_id
)as t
order by d_id'
print(@tmpSql)
declare @BeginTime datetime,@EndTime datetime
set @BeginTime=getdate()
print('Begin Time:'+cast(@BeginTime as nvarchar(20)))
EXEC(@tmpSql)
set @EndTime=getdate()
print('End Time:'+cast(@EndTime as nvarchar(20)))
print('Use Time;'+cast(datediff(ms,@BeginTime,@EndTime) as nvarchar(20)))
我想问一下,就是当那个@PageIndex=1的时候就显示不出来,就是第一页显示不出来,其它时候都显示的出来
请帮忙解决一下,谢谢!!
------解决方案--------------------print(@tmpSql)
看看SQL语句
if @page = 1
set @intCounts = @pageSize
else
begin
set @intCounts = (@page-1) * @pageSize + 1
end
------解决方案--------------------
create proc proc_pagination --创建分页存储过程
@page int = 1, -- 页数
@pagesize int = 10, -- 每页的大小
@tableName varchar(100), -- 要查询的表名
@orderFields varchar(255), -- 排序的字段名(一定要)
@GetFields varchar(1000) = '*', -- 需要返回的列
@sqlWhere varchar(1500) = '', -- 查询条件(注意: 不要加where,但要加and)
@OrderType varchar(4) = 'desc', -- 设置排序类型
@totalrow int output, --查询出多少条数据(输出参数)
@totalpage int output --总有多少页(输出参数)
as
declare @sql varchar(2000),@sumRowSql nvarchar(2000),@ParmDefinition nvarchar(200);
set @sumRowSql = N'select @totalRow = count(1) from ' + @tableName + ' where 1 = 1 '+@sqlWhere; --查询的SQL语句
set @ParmDefinition = N'@totalRow int output'; --定义查询SQL语句的参数类型