参考:https://blog.csdn.net/csdnsunyf/article/details/102670914
SQL Serverzh支持3种临时表: 本地临时表、全局临时表和表变量,在某些情况下,你可能会发现临时表比使用永久表更方便。
本地临时表的名称前面有一个编号符 (#table_name),而全局临时表的名称前面有两个编号符 (##table_name)。
本地临时表
可以通过将数字符号作为命名前缀来创建一个本地临时表,如 #T1。3种类型的临时表都在 tempdb数据库中创建。
IF OBJECT_ID('tempdb.dbo.#MyOrderTotalsByYear') IS NOT NULL
DROP TABLE dbo.#MyOrderTotalsByYear;
GO
全局临时表
当创建了全局临时表,它对所有的会话可见。当创建全局临时表的会话断开了连接并且没有对该表的活动引用时,SQL Server自动销毁该表。可以通过以两个数字符号为前缀的min命名方式创建全局临时表,如##T1.
if exists(select 1 from tempdb.dbo.sysobjects where xtype='U' and name='##tempDB_tt')
drop table ##tempDB_tt
表变量
与本地临时表很相像,表变量仅对创建会话可见,但他们的范围更有限:只是对当前批可见。
DECLARE @MyOrderTotalsByYear TABLE
(
orderyear INT NOT NULL ,
qty INT NOT NULL
);
INSERT INTO @MyOrderTotalsByYear(orderyear, qty)
SELECT YEAR(ordermonth), qty AS qty FROM dbo.CustOrders;
SELECT * FROM @MyOrderTotalsByYear;
GO
615

被折叠的 条评论
为什么被折叠?



