Create proc myproc
   @mytbl varchar(20),
   @col1 varchar(20),
   @col2 varchar(20)
As
  Declare @sqlstring varchar(500),@tmptbl
  
  Set @tmptbl = '#mytmp'+@mytbl
  Set @sqlstring = 'Select * into '+@tmptbl+' From ' + @mytbl +' insert into '+@tmptbl+' values('+@col1+','+@col2+')'
  Exec(@sqlstring)
go

解决方案 »

  1.   

    我的临时表都是通过select into 生成的,表结构事先未知,因此无法预先定义吧
    二楼的方法应该是可行的不过我还有个问题
    execute sp_executesql @sqlstring建立临时表后马上删除临时表我知道,sp_executesql是个存储过程,存储过程中建立的局部临时表只能存在于这个存储过程中,存储过程结束,临时表删除。而execute的我就不明白了。