由于动态SQL而使用全局临时表的存储过程

时间:2016-04-20 18:45:24

标签: sql sql-server-2008 stored-procedures dynamic-sql global-temp-tables

目前我们有一个查询预测直接借记产品的收入。此查询使用与临时表相对的永久表,因为查询使用动态SQL,并且在动态SQL执行范围之外无法看到临时表。

我想要做的是使用全局临时表将它们放入存储过程中以使用临时表来解决范围问题。我的问题是,如果它们永远不会并行运行,并且只有在存储过程像普通临时表一样运行时才会删除这些全局临时表吗?或者因为它们是全局的,它们会留在tempdb中吗?

另请注意我已经查看了insert into table方法,但遗憾的是,根据我的评论,我们使用大约1000个表来创建最终输出。

1 个答案:

答案 0 :(得分:0)

这详细阐述了Flicker的评论。 documentation是:

  

会话时会自动删除全局临时表   创建表结束,所有其他任务已停止   引用它们。任务和表之间的关联是   仅在单个Transact-SQL语句的生命周期内维护。这个   表示在完成时删除全局临时表   最后一个主动引用的Transact-SQL语句   创建会话结束时的表格。

因此,这些似乎可以做你想要的。

对于为此目的使用全局临时表,我并不感到兴奋。但它们似乎确实满足了您的需求。好吧,当存储过程完成时,就会在会话结束时删除它们。您可以在定义表时使用动态SQL强制执行此操作。