set @mysql='select * into #temp from t1 where......' 
exec(@mysql+'
create INDEX idx1  ON #temp(dwdm)         //运行到此处出错!
')

解决方案 »

  1.   

    这个是临时表的作用域问题,局部临时表在创建它的过程结束后,自动被删除。所以楼主的临时表,在创建它的过程exec结束后,临时表也被删除了,后面的当然就实现不了。
      

  2.   

    老大,那我如何避免删除啊?以后引用它的地方多着呢。我这所心用exec(@mysql)是因为执行的sql中含用变量名,挺复杂的。
      

  3.   

    临时表
    也可以创建临时表。临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。
      

  4.   

    用全局临时表set @mysql='select * into ##temp from t1 where......' 
    exec(@mysql)create INDEX idx1  ON ##temp(dwdm)
      

  5.   

    shuichangliu:
    谢谢。用全局临时表是可以的,但是,在效率方面,用全局临时表和本地临时表哪个好啊?