如何创建类似于创建普通表的临时表?如何使用SQL Server中的Create语句创建临时表?
例子:
CREATE TABLE table_name
(
column1 datatype,
column2 datatype,
column3 datatype,
....
);
如何创建类似于创建普通表的临时表?如何使用SQL Server中的Create语句创建临时表?
例子:
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
* session *的用法不正确... @ @ table是 - 像任何变量 - 绑定到一个作业。它会通过一个'GO'消失,而一个被称为SP的函数不知道它。一个'#表'将存在于一个会话中,即使是在一个被调用的SP或函数中,而一个'## table'可以从不同的会话到达。 – Shnugo
另外,表变量不是临时表。阅读Martin Smith的[关于DBO.StackExchange的帖子](http://dba.stackexchange.com/questions/16385/whats-the-difference-between-a-temp-table-and-table-variable-in-sql -server/16386#16386)。 –
由于缺乏索引和统计信息,表变量往往会导致执行计划不佳。它们的范围是当前**批次**,而不是“作业”或会话。虽然他们有它们的用途,但他们通常不是临时表的最佳选择。 – alroc
同样的事情,只是#
或##
启动表名:
CREATE TABLE #TemporaryTable -- Local temporary table
(
Col1 int,
Col2 varchar(10)
....
);
CREATE TABLE ##GloablTemporaryTable -- Gloabl temporary table - note it starts with ##.
(
Col1 int,
Col2 varchar(10)
....
);
临时表的名字开始与#
或##
- 第一个是本地临时表最后一个是全球临时表。
Here是描述它们之间差异的许多文章之一。
我投了你的票。被接受的答案有一些缺陷... – Shnugo
之前表名 – Hadi
https://www.simple-talk.com/sql/t-sql-programming/temporary只需添加''# -tables-in-sql-server/ – Hadi
我投票结束这个问题作为题外话,因为它可以通过一个简单的谷歌搜索回答 – alroc