簡體   English   中英

object_id()vs sys.objects

[英]object_id() vs sys.objects

我使用數據庫腳本檢查是否存在存儲過程,然后刪除它然后創建它。

以下哪項對於檢查和刪除SP更有效
選項1

IF EXISTS(SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[myStoredProc]',N'P'))
  DROP PROCEDURE dbo.myStoredProc;

選項2

IF OBJECT_ID (N'dbo. myStoredProc',N'P') IS NOT NULL
  DROP PROCEDURE dbo.myStoredProc;

由於顯而易見的原因,我決定使用第二個,是否有任何理由我應該選擇第一個選項

潮流發生了變化。 MSDN的當前策略是應該使用sys.objects而不是INFORMATION_SCHEMA視圖,因為sys視圖比后者具有更多信息。

不,沒有令人信服的理由直接使用sys.objects。 事實上,不鼓勵使用這些系統視圖 - 所以如果你能避免它,那就這樣做吧!

相反,應盡可能使用INFORMATION_SCHEMA模式視圖 - 這是用於公開有關服務器的元數據的標准SQL-92機制(而不是Microsoft特定的使用sys。*視圖的方式)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM