如何在SQL Server中使用Create语句创建临时表?

问题描述 投票:0回答:3

如何像创建普通表一样创建临时表?

示例:

CREATE TABLE table_name 
(
    column1 datatype,
    column2 datatype,
    column3 datatype,
     ....
 );
sql-server stored-procedures temp-tables
3个回答
78
投票

同样的事情,只需以

#
##
:

开头即可
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)
    ....
);

临时表名称以

#
##
开头 - 第一个是本地临时表,最后一个是全局临时表。

这里是描述它们之间差异的众多文章之一。


65
投票

临时表可以有3种,其中

#
是最常用的。这是一个仅存在于当前会话中的临时表。 与此等效的是
@
,一个声明的表变量。它的“功能”较少(如索引等),并且也仅用于当前会话。
##
#
相同,但是范围更广,因此您可以在同一会话中的其他存储过程中使用它。

您可以通过多种方式创建临时表:

declare @table table (id int)
create table #table (id int)
create table ##table (id int)
select * into #table from xyz

0
投票

如果您有一个包含匹配列或超集的现有表,您还可以将列的类型捕获到一个名为#temp_table 的新临时表中,只需说

select top 0 a, b, c into #temp_table from existing_table
© www.soinside.com 2019 - 2024. All rights reserved.