这个问题我也碰过,好象SQL是编译逻辑有问题,我一般处理的措施是另起一个临时表名字

解决方案 »

  1.   

    DROP TABLE 后有没有commit?
      

  2.   

    这是肯定不允许的。
    你如果想用一个临时表,可以用这种方式 create table #temp_tb(
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [title] [varchar] (50) NULL,
    [questioneruser] [varchar] (20) NULL ,
    [questionface] [varchar] (50) NULL 
            )
      

  3.   

    不清楚microsoft为何如此控制,非临时表无问题
      

  4.   

    说明没有删掉表呀
    if Object_Id('#temp_tb') IS NOT NULL
      DROP TABLE #temp_tb
      

  5.   

    drop table #temp_tb
    go
    ..........
    这样应该可以。但是在存储过程中有不能这样写,还是不要用#table好点,因为这种情况会经常发生的。
      

  6.   

    if Object_Id('#temp_tb') IS NOT NULL
      DROP TABLE #temp_tb
    用了这句之后,的确是你已经不能再使用,但是还是存在,因为你再用select into  ##temp_tb
    回告诉你已经存在
    其实可以重复使用,只是你不能用select into,你删除原来的东西,往里面插入数据,更新都可以如果你前后需要使用的临时表的结构不一样,那么你不修改临时表的结构,而想用同样名字的表是不可以的
      

  7.   

    我也碰到这个问题, 
    我的临时表的结构是一样的 , 我是用完后用 delete from #table 来清空,然后继续用如果前后所用的临时表结构不一样, 就麻烦