Declare@CurrentPageint Declare@PageSizeint set@PageSize=6000 set@CurrentPage=0 Declare@IDint Declare@MoveRecordsint --@CurrentPage和@PageSize是传入参数 Set@MoveRecords=@CurrentPage*@PageSize+1 --下面两行实现快速滚动到我们要取的数据的行,并把ID记录下来 SetRowcount@MoveRecords Select@ID=ID from news Orderby ID SetRowcount@PageSize -- Select*From news Where ID>=@IDOrderBy ID SetRowcount0
createprocedure prc_Test ( @PageSizeint, --定义页面的大小 @PageIndexint, --定义当前页面的索引 @strWherenvarchar(1000) --定义查询条件 ) as begin declare@StartIDint declare@MoveRecordsint declare@strTempSqlnvarchar(1000) set@MoveRecords=@PageIndex*@PageSize+1 setrowcount@MoveRecords set@strTempSql='select @StartID=id from PageTest where '+@strWhere exec sp_executesql @strTempSql,N'@StartID int output',@StartID output setrowcount@PageSize exec('select ID,Number,Name from PageTest where '+@strWhere) setrowcount0 end
CREATEPROCEDURE Company ( @PageSizeint, --每页的记录数 @PageIndexint, --当前页码 @StrWherevarchar(1000) --查询条件 ) AS set nocount on begin createtable #aa ( id intidentity(1,1), nid varchar(50) ) declare@PageLowerBoundint--定义下限 declare@PageUpperBoundint--定义上限 set@PageLowerBound=(@PageIndex-1)*@PageSize set@PageUpperBound=@PageLowerBound+@PageSize setrowcount@PageUpperBound declare@SqlStrvarchar(1000) set@SqlStr='insert into #aa(nid) select khbh from Company where '+@StrWhere+' order by Date1 desc' exec (@SqlStr) select*from Company a where a.khbh in (select nid from #aa b where a.khbh=b.nid and b.id between@PageLowerBound+1and@PageUpperBound) orderby Date1 desc end set nocount off GO