[MSSQL][T-SQL]暫存資料表(@, #, ##)的差別

暫存資料表(@, #, ##)的差別

reference:https://dotblogs.com.tw/daniel/2018/01/19/174836

之前開發時,用@,#來建立暫存Table的方式都用過,但也沒特別想過差異。

之前面試時筆試遇到,覺得不錯的問題,把它紀錄下來

1.#TempTable

只能在自己的SessionScope使用,無法跨查詢分業。使用完要手動drop掉,或是關掉查詢分頁

分頁1

分頁2

 

2.##TempTable

跟#TempTable差不多,但可跨查詢分業(SessionScope)。使用完要手動drop掉,或是關掉查詢分頁

分頁1

分頁2

3.@TempTable

將一個TABLE當做變數使用,會自動DROP掉(同個查詢分頁,如果第二次查詢@TempTable沒有重新DECLARE,@TempTable就無法使用)

分頁1 第一次執行

分頁1。沒有重新DECLARE第二次執行

​分頁2

總結:

#TempTable 跟 @TempTable的差別

1.#TempTable會自動drop,@TempTable不會

2.#TempTable可以再拿來做後續應用(ex:INSERT DATA),@TempTable則不行