2009-11-06 65 views

回答

15
select * into #temp_table from current_table_in_stored_procedure 

#temp_table - locally temp 
##temp_table - globally temp 

select top 0 * into #temp_table from current_table_in_stored_procedure to have empty table 
+0

這將從current_table將數據複製到一個#temp_table,但#temp_table不會有相同的密鑰,身份設置等儘管如此,這是執行這一任務的可接受的方式。 – 2009-11-06 19:08:02

+0

@大衛:臨時表*將*繼承身份設置,但不是,沒有任何鍵或索引。我希望我能把它關掉! – 2009-11-06 19:16:52

7

SELECT * INTO #t FROM table

,如果你希望它是空的:

SELECT * INTO #t FROM table WHERE 1 = 2

1

另外,您可以腳本現有表並更改名稱爲臨時表名並添加創建表跺腳到您想要運行的腳本的其餘部分的頂部。我通常會這樣做,如果它真的很重要,臨時表完全匹配實際表的結構(例如,當我創建一個名爲#inserted的假表,用於測試我打算放入觸發器的代碼時使用)。

大部分時間雖然select into會讓你得到你所需要的。

0

公用表表達式或表變量也服務器從臨時表分開的目的

相關問題