在存儲過程中,何時在SQL Server 2005中創建#Temptable?在創建查詢執行計劃或執行存儲過程時?SQL Server 2005臨時表
if (@x = 1)
begin
select 1 as Text into #Temptable
end
else
begin
select 2 as Text into #Temptable
end
在存儲過程中,何時在SQL Server 2005中創建#Temptable?在創建查詢執行計劃或執行存儲過程時?SQL Server 2005臨時表
if (@x = 1)
begin
select 1 as Text into #Temptable
end
else
begin
select 2 as Text into #Temptable
end
有趣的問題。
對於您正在創建的臨時表的類型,我認爲這是存儲過程執行的時間。使用#前綴創建的表可供創建的SQL Server會話訪問。一旦會話結束,它們將被刪除。
此網址:http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx似乎表明在創建查詢執行計劃時不會創建臨時表。
它在執行時創建並在會話結束時被刪除。
雖然它可能在會話結束時自動丟棄,但最好在練習完成後自行放下表格。
您可能還想考慮表變量,其生命週期完全由您來管理。
DECLARE @MyTable TABLE (MyPK INT IDENTITY, MyName VARCHAR(100))
INSERT INTO @MyTable (MyName) VALUES ('Icarus')
INSERT INTO @MyTable (MyName) VALUES ('Daedalus')
SELECT * FROM @MyTable
我幾乎總是使用這種方法,但它確實有缺點。最值得注意的是,你只能使用你可以在TABLE()結構中聲明的索引,這意味着你僅限於主鍵 - 不使用ALTER TABLE。