declare @table table(id int)
insert into @table select id from DEF_Boxview;
declare @sql varchar(200)
  set @sql='select * from'+ @table+' where id =1'
exec(@sql)出现的错误是:必须声明标量变量 "@table"。

解决方案 »

  1.   

    set @sql='select * from @table where id =1'
      

  2.   

    declare @sql varchar(8000)
    set @sql='declare @table table(id int)
    insert into @table select id from DEF_Boxview;
    select * from @table  where id =1'
    exec( @sql)
      

  3.   


    这样试过了 错误必须声明标量变量 "@table"。 
      

  4.   

    declare @sql varchar(200)
      set @sql='select * from'+ @table+' where id =1'
    exec(@sql)
    直接 select * from @table where id =1  不就可以了吗?
      

  5.   

    DECLARE @TableName VARCHAR(50),@Sql NVARCHAR(MAX),@OrderID INT;SET @TableName = 'Orders';SET @OrderID = 10251;SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC'EXEC(@sql);