临时表与全局临时表

EXEC('SELECT month

INTO #tempMonth

FROM ( SELECT DISTINCT

CONVERT(VARCHAR(7), Date, 120) [month]

FROM '+@tblName+'

) a

WHERE [month] <> '''+@currentMonth+'''

ORDER BY month;');

SELECT *

FROM #tempMonth;

此处会报错,提示#tempMonth不存在,原因是#tempMonth临时表只有在创建本地临时表的连接上才能看到这些表。

应该改成##tempMonth,全局临时表。

以两个井号 (##) 开头的那些表名。在所有连接上都能看到全局临时表。如果在创建全局临时表的连接断开前没有显式地除去这些表,那么只要所有其它任务停止引用它们,这些表即被除去。当创建全局临时表的连接断开后,新的任务不能再引用它们。当前的语句一执行完,任务与表之间的关联即被除去;因此通常情况下,只要创建全局临时表的连接断开,全局临时表即被除去。

原文地址:https://www.cnblogs.com/zhoushiya/p/12107340.html