set   @str= '   select   *                    
                      from   (   '   +   @sql   +   ') '   
insert into #aa exec(@str) 

解决方案 »

  1.   

    declare   @sql   varchar(1000) 
    set   @sql= '(select   *   from   pro)   temp ' set   @str= '   select   * 
                          into   ##aa 
                          from   '   +   @sql      
    exec(@str) 
    select * from ##aa
    改为##a全局临时表,多了()括号
      

  2.   

    --以下测试
    declare @s nvarchar(1000),@s2 nvarchar(1000)
    set @s='(select top 5 ID from sysobjects) t'
    set @s2='select * into ##a from '+@s
    exec (@s2)
    select * from ##aID          
    ----------- 
    1
    2
    3
    4
    6(所影响的行数为 5 行)
    --drop table ##a
      

  3.   

    如果要用#a
    只有在执行之前建好;
    create table #a(col1.....)insert #a exec(@s)