CREATEprocedure aspnetpager (@kindidnvarchar(255), @pagesizeint, @pageindexint) as set nocount on begin declare@indextabletable(id intidentity(1,1),nid int) declare@PageLowerBoundint declare@PageUpperBoundint set@PageLowerBound=(@pageindex-1)*@pagesize set@PageUpperBound=@PageLowerBound+@pagesize setrowcount@PageUpperBound insertinto@indextable(nid) select id from news where kind_id=@kindidorderby psn desc,ptime desc,id desc select*from news O,@indextable t where O.id=t.nid and t.id between@PageLowerBound+1and@PageUpperBoundorderby t.id end set nocount off GO
sql2005
createprocedure aspnetpager (@pagesizeint, @pageindexint) as begin with temptbl as ( SELECT ROW_NUMBER() OVER (ORDERBY psn desc,ptime desc,id desc)AS Row, *from news O where kind_id=1) SELECT*FROM temptbl where Row between (@pageindex-1)*@pagesize+1and (@pageindex-1)*@pagesize+@pagesize end