TSQL How to check if temporary table already exist – 在TSQL 上如何檢查出暫存的表已經存在?

最近有朋友問怎樣才可以知道 SQL 中的Temporary Table/暫存表 已經存在?
因為很多時候我們都有使用到Temporary Table/暫存表.. 方便自己寫SQL Query和 檢查結果

有時候我們也會在Stored procedure上 使用Temporary Table..
但是有時候可能是因為資料的錯誤..
令到Stored Procedure 在執行到一半的時候便停止了
這時候之前建立的Temporary Table. 可能仍然還存在Database上..
所以當再次執行這個Stored Procedure 時..
因為會建立Temp Table的關係..所以有可能會會出現以下的錯誤
Msg 2714, Level 16, State 6, Line 1
There is already an object named ‘#test’ in the database.

解決方法
我們可以用一些SQL 程式碼來檢查Temp Table 是否存在..
之後再決定做什麼
我們可以用OBJECT_ID() 這個方法來找出Object 是否存在
E.G.

OBJECT_ID('tempdb..TempTableName')

以下是小小的例子

 

DECLARE @TempTableName VARCHAR(100) = '#Test'

IF OBJECT_ID('tempdb..'+@TempTableName) is not NULL
SELECT 'Temp Table Exist' AS Result
ELSE
SELECT 'Temp Table Does not Exist' AS Result
--Expected result 'Temp Table Does not Exist'

CREATE TABLE #test(
CustomerCode VARCHAR(10)
)
IF OBJECT_ID('tempdb..'+@TempTableName) is not NULL
SELECT 'Temp Table Exist' AS Result
ELSE
SELECT 'Temp Table Does not Exist' AS Result
DROP TABLE #Test
--Expected result 'Temp Table Exist'

IF OBJECT_ID('tempdb..'+@TempTableName) is not NULL
SELECT 'Temp Table Exist' AS Result
ELSE
SELECT 'Temp Table Does not Exist' AS Result
--Expected result 'Temp Table Does not Exist'

執行以上SQL 之後的結果

Hope you find it useful

Leave a Reply