如何在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