在查询分析器中运行以下出错,提示 必须声明变量 '@t'
declare @t varchar(50)
set @t='test_table'
select * from @t

解决方案 »

  1.   

    declare @t varchar(50)
    declare @sql varchar(200)
    set @t='test_table'
    set @sql='select * from '+ @t
    exec(@sql)
      

  2.   

    declare @t  table (表结构 )
      

  3.   

    一楼的可以..但现在又有一个新的问题,以下提示 必须声明变量 '@rq' declare @t varchar(50) 
    declare @sql varchar(200) 
    declare @rq datetime
    set @t='test_table' 
    set @sql='select @rq=max(rq) from '+ @t 
    exec(@sql) 如何改?
      

  4.   

    declare @t varchar(50)  
    declare @sql nvarchar(200)  
    declare @rq datetime 
    set @sql='select @rq=max(rq) from '+ @t  exec sp_executesql @sql,N'@rq datetime out',@rq out select @sql 
      

  5.   

    需要注意的是@sql在这种情况下需要设为nvarchar对了,别忘了给@t赋值。。
      

  6.   

    要写成动态的sql语句,用exec() 运行declare @t varchar(50)
    set @t='test_table'
    Exec('select * from '+@t)
      

  7.   


    declare @t varchar(50)  
    declare @sql nvarchar(200)  
    declare @rq datetime 
    set @t='test_table'  
    set @sql='select @rq=max(rq) from '+ @t  
    Exec sp_executesql @sql,N'@rq datetime output',@rq datatime outputselect @rq
      

  8.   

    declare @t TABLE(A INT)
    set @t='test_table'
    select * from @t
      

  9.   

    declare @t TABLE(A INT)select * from @t
      

  10.   


    这样是没办法执行的至少要这样:exec('select * from '+@t)