iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0
自我挑戰組

Bug仔的筆記本系列 第 18

SQL Server 的 #Table 與 ##Table 暫存表

  • 分享至 

  • xImage
  •  

昨天講了 SQL 的 CTE ,今天換來講暫存表。

跟 CTE 不同,暫存表會存放於 SQL Server 中系統資料庫的 tempdb 。是會寫到實體檔案的,所以建立的過程會被 I/O 的效能影響。

https://ithelp.ithome.com.tw/upload/images/20221003/201204205Y7TFVwm3v.png

#Table

一個井號的暫存表(#Table),不是指只有建立的 User 可以看見,而是只有建立的工作階段可以看見、可以使用

同一個登入帳戶,不同的頁籤就是不同的工作階段。
https://ithelp.ithome.com.tw/upload/images/20221003/20120420f0qtqS4ir4.png

##Table

兩個井號的暫存表(##Table),在建立的工作階段尚未關閉時,整台資料庫的其他 User 、其他工作階段都可以看見、可以使用

進一步說明

Stackoverflow 上這則討論中提到。

Declare @strDynamicSQL as varchar(8000)

Set @strDynamicSQL = 'Select GetDate() As TheDate Into #TheDateTable'
Execute(@strDynamicSQL)

Select *
From #TheDateTable

上述語法中最後一行想要取得 #TheDateTable 是會發生錯誤,因為實際建立暫存表的是Execute()


上一篇
SQL 語法 With As
下一篇
實作一個跳轉到其他登入頁的 ActionFilter
系列文
Bug仔的筆記本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言