Globle临时表的明确目的是什么?

时间:2018-05-23 12:30:57

标签: sql-server temp-tables

我已经引用了全局临时表的文档,但不了解临时表的明确目的。

以下是我提到的网址:https://www.c-sharpcorner.com/UploadFile/97fc7a/local-and-global-temporary-tables-in-sql-server-2008/

有谁可以帮我理解全局表格以及本地和全球临时表格之间的区别?何时使用全局临时表与本地临时表?他们有特殊目的吗?

2 个答案:

答案 0 :(得分:2)

在声明期间具有单个#的本地临时表仅对创建它的会话/连接可见。所有会话和连接都可以看到包含2个##的全局临时表。

如果你打开SSMS,打开两个查询窗口,制作每种类型的表,并尝试从每个窗口查询它们,你可以看到这个。

答案 1 :(得分:2)

临时表和全局临时表之间的区别在于它们的范围。您在链接的文章中对此进行了描述;临时表仅在创建它们的存储过程或会话中可见,并在该范围终止时销毁。全局临时表可以从任何地方获得,并且在没有会话引用它们时会被销毁。

我最常用的全局临时表是在使用动态SQL时。因为动态SQL在与定义它的查询不同的范围内执行(通过sp_executesql),所以它无法从动态SQL中访问调用SQL中的临时表。

相反,我声明一个全局临时表然后从动态SQL中访问它。这通常是在同时从多个数据库中收集数据的上下文中,使用游标循环遍历所有数据库并插入到全局临时表中。