日期:2014-05-18  浏览次数:20330 次

存储过程里的临时表问题?
存储过程里的临时表问题?在服务器里的存储过程里有一个临时表#a,如果客户机1和客户机2同时执行存储过程,那么客户机2能查到客户机1里的临时表内容吗?另外存储过程执行完毕的话,是删除临时表吧?如果客户机1先执行完,会不会删除客户机2的临时表内容?


------解决方案--------------------
临时表分:局部临时表和全局临时表;前者1个#号(如#t),后者2个##号(如##t)

局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除,也可以手动删除
全局临时表(##开头)对其它的连接也有效,在所有访问过它的连接都断开时会自动删除,也可以手动删除

用局部临时表,不同的连接用同一名称建立临时表是可以的(客户机之间没有关系),全局临时表则不行
------解决方案--------------------
一般都是局部临时表#table,只在该存储过程内生效~所以你的担心不存在
------解决方案--------------------
本地临时表仅在当前会话中可见,不同用户创建的同名临时表相互没有影响,
本地临时表将在退出其作用域时由系统自动除去.(存储过程中创建的本地临时表,在存储过程执行完成后自动删除)
------解决方案--------------------
只要你创建的临时表是一个#号的就没有问题,二者操作不会相互影响。
------解决方案--------------------
不会有影响的,记得要一个#号 哈亲
------解决方案--------------------
每个用户调用的时候分别对应一个session,其实就是一个spid,或者你可以认为就是你在ssms中打开的一个页面,而只有一个#的临时表是只存在于session当中,一旦session断开,临时表就会销毁。如果是##的全局临时表,就有可能产生冲突,所以要考虑情况使用,一般非特殊需要,不需要使用##的临时表。
------解决方案--------------------
没用过全局临时表.

我看楼主用的是局部临时表,那就不用担心这种情况了.