现在的项目中使用了存储过程和函数,存储过程中有使用临时表的,函数中使用了表变量。
在网上看到的资料说表变量会在函数结束回收,但现在tempdb里面总留下许多#号开头的表,如#0001A5B7
函数可能会出现多层调用的情况,因为对数据库了解不多,请各位帮忙分析一下。

解决方案 »

  1.   

    一般临时表只会在当前会话中有效,也可以在用完的时候把它drop掉
      

  2.   

    我的tempdb里怎么不见有表呢!奇怪...
      

  3.   

    表变量是个变量,只存在你当前的会话中.许多#号开头的表,如#0001A5B7,是临时表,存在于tempdb数据库中,两者是不同的东西.
      

  4.   

    其实只要服务重启以后就可以清除掉临时表了不过一般来说在语句写结束后DROP掉是最好的
      

  5.   

    表变量存放于内存当中,而临时表则通常产生在tempdb数据库中,两者的共同点是当前会话结束后会自动清理掉,一般情况下在存储过程中使用的临时表,在存储过程语句末尾最后面应Drop掉这些表 。