如何创建一个临时表,类似于创建普通表的方式?
示例:
CREATE TABLE table_name
(
column1 datatype,
column2 datatype,
column3 datatype,
....
);
如何创建一个临时表,类似于创建普通表的方式?
示例:
CREATE TABLE table_name
(
column1 datatype,
column2 datatype,
column3 datatype,
....
);
同样的事情,只需以#
或##
开头即可开始表格名称:
CREATE TABLE #TemporaryTable -- Local temporary table - starts with single #
(
Col1 int,
Col2 varchar(10)
....
);
CREATE TABLE ##GlobalTemporaryTable -- Global temporary table - note it starts with ##.
(
Col1 int,
Col2 varchar(10)
....
);
临时表名以#
或##
开头,前者为本地临时表,后者为全局临时表。
这里是许多文章之一,描述它们之间的区别。
临时表可以有三种,其中最常用的是带有 #
的。这是一个仅存在于当前会话中的临时表。
相当于它的是一个已声明的表变量 @
,它的“功能”较少(如索引等),并且也只用于当前会话。
带有 ##
的临时表与带有 #
的一样,不同之处在于作用范围更广,因此您可以在同一会话中、其他存储过程内使用它。
您可以以多种方式创建临时表:
declare @table table (id int)
create table #table (id int)
create table ##table (id int)
select * into #table from xyz
@table
与一个作业相关联。它会随着 GO
命令的执行而消失,并且调用的存储过程(SP)或函数也无法访问它。#table
存在于一个会话中,即使在调用的存储过程或函数中也是如此,而 ##table
可以从不同的会话中访问。 - Shnugo##
)可以在不同的会话中访问,如果我没记错的话,也可以被不同的登录访问。 - ATC
#
符号。 - Hadi