存储过程为: CREATE PROCEDURE B_GetOrderNumber AS select count(*) from Blog_Article where Type <>'文章点评';
RETURN Go //--------------------------------------------------------------------------------------------------// CREATE procedure Blog_Article_GetPaged (@pagesize int, @pageindex int ) as set nocount on begin declare @indextable table(id int identity(1,1),nid int) declare @PageLowerBound int declare @PageUpperBound int set @PageLowerBound=(@pageindex-1)*@pagesize set @PageUpperBound=@PageLowerBound+@pagesize set rowcount @PageUpperBound insert into @indextable(nid) select ArticleNumber from Blog_Article order by Create_date desc select O.ArticleNumber,O.Title,SUBSTRING(O.Content,0,20) as Content,O.Type,O.Status from Blog_Article O,@indextable t where O.Type <>'文章点评' and O.ArticleNumber=t.nid and t.id>@PageLowerBound and t.id <=@PageUpperBound order by t.id ,O.Create_date desc end set nocount off GO
抱歉,理解错了,还以为是改变了PageSize后每页的记录数仍然是6条,楼主的意思是设置PageSize为6时一页显示的不够6条记录对吗?从你的存储过程中可以看出来这个问题的原因,就是你向表变量中插入ArticleNumber时没有设置条件( Type <>'文章点评' ),而取数据时取设置了,就就导致插入的数据并不是所有符合条件的记录,不符合条件的记录就被过滤掉了,但因为取记录是通过连续的编号实现的,比如从6到11这六条记录却只有四条符合条件的记录被选出来,这就是为什么会出现每页记录时多时少的原因,解决的办法是:在把ArticleNumber插入表变量之前设置查询条件,而不是取数据时设置,也就是存储过程改为这样:
CREATE procedure Blog_Article_GetPaged (@pagesize int, @pageindex int ) as set nocount on begin declare @indextable table(id int identity(1,1),nid int) declare @PageLowerBound int declare @PageUpperBound int set @PageLowerBound=(@pageindex-1)*@pagesize set @PageUpperBound=@PageLowerBound+@pagesize set rowcount @PageUpperBound insert into @indextable(nid) select ArticleNumber from Blog_Article where Type <>'文章点评' order by Create_date desc select O.ArticleNumber,O.Title,SUBSTRING(O.Content,0,20) as Content,O.Type,O.Status from Blog_Article O,@indextable t where O.ArticleNumber=t.nid and t.id>@PageLowerBound and t.id <=@PageUpperBound order by t.id ,O.Create_date desc end set nocount off GO
insert into @indextable(nid) select ArticleNumber from Blog_Article order by Create_date desc
select O.ArticleNumber,O.Title,SUBSTRING(O.Content,0,20) as Content,O.Type,O.Status from Blog_Article O,@indextable t where O.Type <>'文章点评' and O.ArticleNumber=t.nid and t.id>@PageLowerBound and t.id <=@PageUpperBound order by t.id ,O.Create_date desc