use mytable
go
create procedure page_sp
 @pagesize int,
 @pageindex int
as
 declare @sql varchar(1000)
  set @sql='select top '+str(@pagesize)+' * from testtable where id not in
(select top '+str(@pagesize*(@pageindex-1))+' id from testtable order by id)
order by id'
exec(@sql)
go

解决方案 »

  1.   

    不是声明变量的问题,是不可以 这样使用select top 变量。
    而要跟楼上所说那么做。
    create procedure page_sp
     @pagesize int,
     @pageindex int
    as
     declare @sql varchar(1000)
      set @sql='select top '+str(@pagesize)+' * from testtable where id not in
    (select top '+str(@pagesize*(@pageindex-1))+' id from testtable order by id)
    order by id'
    exec(@sql)