当前位置: 代码迷 >> .NET相关 >> 数据库分页,该如何处理
  详细解决方案

数据库分页,该如何处理

热度:6607   发布时间:2013-02-26 00:00:00.0
数据库分页

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

------解决方案--------------------------------------------------------

 
SQL code
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语句的参数类型
  相关解决方案