MS SQL SERVER 2008 使用OBJECT_ID判斷臨時表是否存在


  我們在寫sql 腳本的時候經常會用到臨時表,有時間也需要根據臨時表是否存在做一些邏輯處理。還好sql server已經集成了一個 Object_ID的函數,能夠判斷是否創建了臨時表。使用挺方便的。
 
OBJECT_ID 參數:
  'object_name'
  要使用的對象。 object_name  的數據類型為   varchar    nvarchar。如果   object_name  的數據類型為   varchar,則它將隱式  轉換為   nvarchar。可以選擇是否指定數據庫和架構名稱。
  
   'object_type' 
       架構范圍的對象類型。 object_type  的數據類型為   varchar    nvarchar。如果   object_type  的數據類型為   varchar,則它將    隱式轉換為   nvarchar。有關對象類型的列表,請參閱   sys.objects (Transact-SQL)  中的   type  列。

  第一個Name就是我們創建的臨時表的名稱如果是臨時表需要(tempdb.dbo.#mytemp),第二個type其實可以不用填寫。我在使用的時候一般都是給第一個參數,也沒深入了解第二個參數。

實例:

一、判斷臨時表是否存在,如果存在則刪除。

--創建一個臨時表

CREATE TABLE #mytemptable
(
	id INT
)

--判斷臨時表是否存在,存在則刪除

IF OBJECT_ID(N'tempdb.dbo.#mytemptable') IS NOT NULL
BEGIN
    DROP TABLE #mytemptable
    PRINT 1
END
ELSE
BEGIN
    PRINT 2
END
第一次執行結果:1

第二次執行結果:2

二、判斷臨時表是否存在。如果不刪除將一直存在。

--創建一個臨時表

CREATE TABLE #mytemptable(id INT)

--沒有刪除將一直存在

IF OBJECT_ID(N'tempdb.dbo.#mytemptable') IS NOT NULL

BEGIN

    PRINT 1

END

ELSE

BEGIN

    PRINT 2

END

 執行結果:1

這個執行結果是在一個查詢分析器里面執行的結果,開啟一個就會有一個會話存在,如果沒有關閉這個會話他將一直存在。

那么如果這個會話結束了沒有手動釋放資源,那么臨時表是否還會占用空間。

待續未完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM