如何創建類似於創建普通表的臨時表?如何使用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