一位网友的存储过程如下:
ALTER proc [dbo].[pxryInfo_AllowPageing]
@pageIndex int,
@pageEnd int
as
begin
with temp as( 
select Row_Number() over(order by p.ID desc) as row,* FROM [CS_pxryInfo] as p) 
select * from temp where row between @pageIndex and @pageEnd
end问题一:“@pageIndex”和"@pageEnd",不是不是表示每页的第一行记录和最后一行记录?问题二:“with temp as( select Row_Number() over(order by p.ID desc) as row,* FROM [CS_pxryInfo] as p) ”一句是不是表示“创建一个叫做Temp的,根据[CS_pxryInfo]表按照自己的ID进行倒排序,得到的临时表”?问题三:“select * from temp where row between @pageIndex and @pageEnd”表示查询第“@pageIndex”和“@pageEnd”之间的记录?可是这样穿不起来啊,还是理解不了它的功能?那位大侠给解释下,感激不尽

解决方案 »

  1.   

    Row_Number()随机你理解的对这个就是返回传入的两个参数之间的随即数据点击第二页的时候 返回第一页和第二页之间的数据来作为第二页显示的数据。。但是这个貌似不太好 看看aspnetpager里的分页存储过程。
      

  2.   


    是不是点击下一页那么“@pageIndex”和“@pageEnd”都得加上“每页的记录数”,也就是每页的大小。前一页就要减去每页的大小???
      

  3.   


    对对对,我来帮你穿起来这个就是把指定表按照他的ID进行倒排序得到相应的编号,同时生成一个临时表,然后根据“PageIndex”和"PageEnd"返回记录集,返回的记录集的条数是它们的差,当进行翻页时他们同时加上或是减去页得大小,明白了吗?