我已经引用了全局临时表的文档,但不了解临时表的明确目的。
有谁可以帮我理解全局表格以及本地和全球临时表格之间的区别?何时使用全局临时表与本地临时表?他们有特殊目的吗?
答案 0 :(得分:2)
在声明期间具有单个#的本地临时表仅对创建它的会话/连接可见。所有会话和连接都可以看到包含2个##的全局临时表。
如果你打开SSMS,打开两个查询窗口,制作每种类型的表,并尝试从每个窗口查询它们,你可以看到这个。
答案 1 :(得分:2)
临时表和全局临时表之间的区别在于它们的范围。您在链接的文章中对此进行了描述;临时表仅在创建它们的存储过程或会话中可见,并在该范围终止时销毁。全局临时表可以从任何地方获得,并且在没有会话引用它们时会被销毁。
我最常用的全局临时表是在使用动态SQL时。因为动态SQL在与定义它的查询不同的范围内执行(通过sp_executesql
),所以它无法从动态SQL中访问调用SQL中的临时表。
相反,我声明一个全局临时表然后从动态SQL中访问它。这通常是在同时从多个数据库中收集数据的上下文中,使用游标循环遍历所有数据库并插入到全局临时表中。