用临时表, 表变量不能跨作用域除非你在 execute 使用表变量

解决方案 »

  1.   

    -- 下面这样是可以的(将定义和使用放在同一作用域
    declare @prd char(6) 
    declare @sql varchar(1000) 
    declare @tab varchar(100) set @prd='200807' 
    set @tab = 'dbo.kqbrush'+@prd 
    set @sql='
    DECLARE  @chuqin TABLE([name] [char] (10),[no] [varchar] (10),[bmno] [char] (10),[bmmc] [char] (20)) 
    insert into '+ @chuqin +' select name,no,bmno,bmmc from '+@tab  + '
            select * from @chuqin 
    '
            execute (@sql) 
      

  2.   


    --用全局临时表
    set @sql='insert into ##chuqin select name,no,bmno,bmmc from '+@tab
            execute (@sql)
            select * from ##chuqin 
      

  3.   

    不可以,执行结果是:
    Server: Msg 137, Level 15, State 2, Line 11
    Must declare the variable '@chuqin'.@chuqin 前后的引号去掉就可以了.谢谢!