如何在SQLServer中使用create语句创建临时表?

如何在SQLServer中使用create语句创建临时表?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,如何创建与创建普通表类似的临时表 例如: CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... ); 同样,只需以#或#开始表名: 临时表名称以#或#开头-第一个是本地临时表,最后一个是全局临时表 是描述它们之间差异的众多文章之一。一个临时表可以有3种,其中使用最多的是#。这是仅存在于当前会话中的临时表。 与此等价的是@,一个声明的表变量。它

如何创建与创建普通表类似的临时表

例如:

CREATE TABLE table_name 
(
    column1 datatype,
    column2 datatype,
    column3 datatype,
     ....
 );

同样,只需以
#
#
开始表名:

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


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

一个临时表可以有3种,其中使用最多的是
#
。这是仅存在于当前会话中的临时表。 与此等价的是
@
,一个声明的表变量。它的“函数”(如索引等)稍微少一些,并且只用于当前会话。
##
#
相同,但是范围更广,因此您可以在同一会话中,在其他存储过程中使用它

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

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

只需在表名前添加
#
,我投票将此问题作为离题题题结束,因为它可以通过简单的谷歌搜索得到答案会话的用法不正确。。。与任何变量一样,
@表
绑定到一个作业。它将随着
GO
而消失,而被调用的SP或函数不知道它。
#表
将存在于一个会话中,即使在被调用的SP或函数中,而
#表
可以从不同的会话访问。此外,表变量不是临时表。阅读Martin Smith的详细资料。由于缺少索引和统计数据,表变量通常会导致执行计划不佳。它们的作用域是当前批次,而不是“作业”或会话。虽然它们有其用途,但与临时表相比,它们通常不是最佳选择。表变量是临时表,而不是在tempdb中创建的表。但是,即使@table使用tempdb(请参阅),table变量也不同于临时表。他们完全不同。此外,一个全局临时表(
##
)可以在不同的会话中访问,如果我没记错的话,也可以通过不同的登录访问。
declare @table table (id int)
create table #table (id int)
create table ##table (id int)
select * into #table from xyz