把execute(@sql) 改成print(@sql)看比较清楚

解决方案 »

  1.   

    打印出来是select top5* from guest_history where autoid not in(select top 5autoid from guest_history)
    很明显,top5*  和 top 5autoid  那里少空格
      

  2.   

    declare @page int 
    declare @current int 
    declare @sql varchar(1000) 
    set  @page = 5 
    set @current = 2 
    set @sql = 'select top ' + cast(@page as varchar(4)) 
    set @sql = @sql + ' * from guest_history where autoid not in(' 
    set @sql = @sql + 'select top ' + cast((@current-1)*@page as varchar(5)) 
    set @sql = @sql + ' autoid from guest_history)' 
    execute (@sql) 
      

  3.   


    declare @page int 
    declare @current int 
    declare @sql varchar(1000) 
    set  @page = 5 
    set @current = 2 
    set @sql = 'select top ' + cast(@page as varchar(4)) 
    set @sql = @sql + ' * from guest_history where autoid not in(' 
    set @sql = @sql + 'select top ' + cast((@current-1)*@page as varchar(5)) 
    set @sql = @sql + ' autoid from guest_history)' 
    execute (@sql) 
    cast((@current-1)*@page as varchar(5)) 修改 成 cast(((@current-1)*@page) as varchar(5))