create procedure Error_Get
(
@startindex int,
@pagesize int
)
as
begin
select top (@pagesize) * from Error where ER_ID Not In(select top(@pagesize*@startindex) ER_ID from Error order by ER_ID DESC) order by ER_ID DESC
end
go上面的语句在SQL2005中执行正常,为毛在sql2000中就是错误的,请高手指点下

解决方案 »

  1.   

    2000里面 TOP 后面不能直接跟变量 需要用动态拼接。
      

  2.   

     top (@pagesize)不支持括號,改為動態
      

  3.   

    exec('select top (' +@pagesize+ ') * from Error where ER_ID Not In(select top(' +@pagesize*@startindex+ ') ER_ID from Error order by ER_ID DESC) order by ER_ID DESC')
      

  4.   

    create procedure Error_Get
    (
    @startindex int,
    @pagesize int
    )
    as
    begin
    EXEC('select top '+@pagesize+' * from Error where ER_ID Not In(select top(@pagesize*@startindex) ER_ID from Error order by ER_ID DESC) order by ER_ID DESC')
    end
    go
      

  5.   

    我发现掉了ltrim
    exec('select top (' +ltrim(@pagesize)+ ') * from Error where ER_ID Not In(select top(' +ltrim(@pagesize*@startindex)+ ') ER_ID from Error order by ER_ID DESC) order by ER_ID DESC')