全局临时表的明确目的是什么?
What is the clear purpose of Globle temporary tables?
我参考了全局临时 table 的文档,但不明白临时 table 的明确用途。
谁能帮助我理解全局 tables 以及本地和全局临时表之间的区别?什么时候使用全局临时 tables 与本地临时的?他们有特殊用途吗?
本地临时文件 table,在声明期间带有单个 #,仅对创建它的 session/connection 可见。全局临时 tables,带有 2 ##,对所有会话和连接可见。
如果您打开 SSMS,您可以看到实际效果,打开两个查询 windows,为每种类型创建一个 table,并尝试从每个 window 中查询它们.
temp tables 和 global temp tables 的区别在于它们的范围。这在您链接的文章中有所描述; temp tables 仅在创建它们的存储过程或会话中可见,并在该范围终止时销毁。全局临时文件 table 可从任何地方使用,并且在没有会话再引用它们时被销毁。
我最常使用全局临时 tables 是在使用动态 SQL 时。因为动态 SQL 的执行范围不同于定义它的查询(通过 sp_executesql
),所以它无法从内部调用 SQL 访问临时 table动态 SQL.
相反,我声明了一个全局临时文件 table,然后从动态 SQL 中访问它。这通常是在一次从多个数据库中收集数据的上下文中,使用游标循环遍历所有数据库并插入到全局临时文件 table.
我参考了全局临时 table 的文档,但不明白临时 table 的明确用途。
谁能帮助我理解全局 tables 以及本地和全局临时表之间的区别?什么时候使用全局临时 tables 与本地临时的?他们有特殊用途吗?
本地临时文件 table,在声明期间带有单个 #,仅对创建它的 session/connection 可见。全局临时 tables,带有 2 ##,对所有会话和连接可见。
如果您打开 SSMS,您可以看到实际效果,打开两个查询 windows,为每种类型创建一个 table,并尝试从每个 window 中查询它们.
temp tables 和 global temp tables 的区别在于它们的范围。这在您链接的文章中有所描述; temp tables 仅在创建它们的存储过程或会话中可见,并在该范围终止时销毁。全局临时文件 table 可从任何地方使用,并且在没有会话再引用它们时被销毁。
我最常使用全局临时 tables 是在使用动态 SQL 时。因为动态 SQL 的执行范围不同于定义它的查询(通过 sp_executesql
),所以它无法从内部调用 SQL 访问临时 table动态 SQL.
相反,我声明了一个全局临时文件 table,然后从动态 SQL 中访问它。这通常是在一次从多个数据库中收集数据的上下文中,使用游标循环遍历所有数据库并插入到全局临时文件 table.