连接1:创建全局临时表
select * into ##1 from sysobjects 新建连接2:查询全局临时表select * from ##1 成功!关闭连接1后,再次在连接2上查询全局临时表select * from ##1 失败!
因为不同的存储过程之间调用了临时表,造成了有时可以查询出数据,但有时就查不不到。而且非常没有规律行 所有建议楼主不要用临时表,而用实际存在的表,每次查询或者创建的时候先判断!

解决方案 »

  1.   

    ojuju10 说的我理解了。不过,我应该怎么控制连接何时断开呢?
      

  2.   

    对于全局临时表,一下是联机帮助的一段话:“如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。”所以楼主在程序中先调用存储过程1,在调用存储过程2,应该每一次都成功查到数据的。
    我认为导致失败有两种可能:
    1:你的第一个存储过程中,没有判断时候已经存在,直接就创建全局临时表,建议添加判断的SQL
    2:在程序中请保证两个存储过程都是在同一个数据库连接中执行的,就是保证你的程序只有一个数据库连接。
      

  3.   

    回答narsh:
    1:我在执行存储过程1时有判断,有判断。(抱歉没有贴上来)
    2:只有一个数据库连接的含义,具体指怎么的连接形式?