create proc sp_gb_select_for_pages
 @startpage int=1,
@pagesize int=10,
@pagecount int output
as
set nocount on
if(@startpage>0)
   set @startpage=(@startpage-1)*@pagesizeselect @pagecount=count(*) from bookinfo
select top  (@pagesize)  *
from bookinfo
where id not in
(
select top  (@startpage)  id
               from bookinfo
              order by id desc
)order by id desc 
return 

解决方案 »

  1.   

    仿佛是
    select top  (@pagesize)  *
    top不能传递变量
    直接改成10就正确了
      

  2.   

    不能直接用:select top  (@pagesize),变量不可以。
    要用动态SQL
      

  3.   


    declare @sql nvarchar(2000)
    set sql = "select top " +@pagesize+ " * from bookinfo 
    where id not in 

    select top  "+@startpage+ " id from bookinfo 
                  order by id desc 
    ) exec (@sql)
      

  4.   

    select top  (@startpage)  id 
                  from bookinfo 
                  order by id desc 
    这样用,要改为动态...