将set @sql = 'select * from @t'
改成 set @sql='select * from'+@t 试试

解决方案 »

  1.   

    把变表量的定义也放在动态语句里。---------------------
    http://chinadba.cn
    最具实战经验的数据库优化,管理,设计,培训网
      

  2.   

    create procedure [sp_executesql]
    @t varchar(100)
    as
    declare @sql varchar(200)set @sql='select * from'+@t
    execute @sql执行过程:
    exec sp_executesql @t='tablename'
      

  3.   

    exec ('select * from '+@t)
      

  4.   

    DECLARE ...create table #tp_res(
       f1 smalldatetime NULL,
       f2 smallint NULL,
       f3 float NULL
    )set @fname='f1'
    set @dyni_SQL='insert into #tp_res' +
    ' ( @pfname) values ( @pcur_day)'
    exec sp_executesql @dyni_SQL,N'@pfname varchar(10), @pcur_day SMALLDATETIME',
          @fname, @cur_day就这样的临时表,不好使,
    提示为:
    服务器: 消息 208,级别 16,状态 3,行 1
    对象名 '#tp_res' 无效。
      

  5.   

    重申:把变表量的定义也放在动态语句里。---------------------
    http://chinadba.cn
    最具实战经验的数据库优化,管理,设计,培训网