OBJECT_ID()---返回架構(gòu)范圍內(nèi)對象的數(shù)據(jù)庫對象標(biāo)識號 語法: OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ]
object_name' [
,'object_type' ] ) 參數(shù): ' object_name ' 要使用的對象。object_name 的數(shù)據(jù)類型為 varchar 或 nvarchar。 如果 object_name 的數(shù)據(jù)類型為 varchar,則它將隱式轉(zhuǎn)換為 nvarchar。 可以選擇是否指定數(shù)據(jù)庫和架構(gòu)名稱。 ' object_type ' 架構(gòu)范圍的對象類型。object_type 的數(shù)據(jù)類型為 varchar 或 nvarchar。 如果 object_type 的數(shù)據(jù)類型為 varchar,則它將隱式轉(zhuǎn)換為 nvarchar。 有關(guān)對象類型的列表,請參閱 sys.objects
(Transact-SQL) 中的 type 列。 返回類型 int 對于空間索引,OBJECT_ID 返回 NULL。 出現(xiàn)錯誤時,返回 NULL。 用戶只能查看其擁有的安全對象的元數(shù)據(jù),或者已對其授予權(quán)限的安全對 象的元數(shù)據(jù)。也就是說,如果用戶對該對象沒有任何權(quán)限,則那些會生成元數(shù)據(jù)的內(nèi)置函數(shù)(如 OBJECT_ID)可能返回 NULL。有關(guān)詳細(xì)信息,請參閱元數(shù)據(jù)可見性配置和元數(shù)據(jù)可見性故障排除。 當(dāng)該參數(shù)對系統(tǒng)函數(shù)可選時,則采用當(dāng)前數(shù)據(jù)庫、主機、服務(wù)器用戶或數(shù) 據(jù)庫用戶。內(nèi)置函數(shù)后面必須跟括號。 當(dāng)指定臨時表名時,除非當(dāng)前數(shù)據(jù)庫為 tempdb, 否則必須在該臨時表名之前加上數(shù)據(jù)庫名稱。例如:SELECT OBJECT_ID('tempdb..#mytemptable')。 系統(tǒng)函數(shù)可以在選擇列表、WHERE 子句和任何允許使用表達式的地方使用。有關(guān)詳細(xì)信息,請參閱表達式 (Transact-SQL)和 WHERE (Transact-SQL)。 A. 返回指定對象的對象 ID以下示例返回 AdventureWorks2008R2 數(shù)據(jù)庫中 Production.WorkOrder 表的對象 ID。 USE master; GO SELECT OBJECT_ID(N'AdventureWorks2008R2.Production.WorkOrder') AS 'Object ID'; GO B. 驗證對象是否存在以下示例通過驗證表是否具有對象 ID 來檢查指定表的存在性。如果該表存在,則將其刪除。如果該表不存在,則不執(zhí)行 DROP TABLE 語句。 USE AdventureWorks2008R2; GO IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL DROP TABLE dbo.AWBuildVersion; GO C. 使用 OBJECT_ID 指定系統(tǒng)函數(shù)的參數(shù)值以下示例使用 sys.dm_db_index_operational_stats 函數(shù)返回 AdventureWorks2008R2 數(shù)據(jù)庫中 Person.Address 表的所有索引和分區(qū)信息。
DECLARE @db_id int; DECLARE @object_id int; SET @db_id = DB_ID(N'AdventureWorks2008R2'); SET @object_id = OBJECT_ID(N'AdventureWorks2008R2.Person.Address'); IF @db_id IS NULL BEGIN; PRINT N'Invalid database'; END; ELSE IF @object_id IS NULL BEGIN; PRINT N'Invalid object'; END; ELSE BEGIN; SELECT * FROM sys.dm_db_index_operational_stats(@db_id, @object_id, NULL, NULL); END; GO
判斷數(shù)據(jù)庫對象是否存在 if object_id(N'對象名',N'對象類型') is not
null 執(zhí)行語句 可選對象類型: AF = 聚合函數(shù) (CLR) C = CHECK 約束 D = DEFAULT(約束或獨立) F = FOREIGN KEY
約束 FN = SQL 標(biāo)量函數(shù) FS = 程序集 (CLR) 標(biāo)量函數(shù) FT = 程序集 (CLR) 表值函數(shù) IF = SQL 內(nèi)聯(lián)表值函數(shù) IT = 內(nèi)部表 P = SQL 存儲過程 PC = 程序集 (CLR) 存儲過程 PG = 計劃指南 PK = PRIMARY
KEY 約束 R = 規(guī)則(舊式,獨立) RF = 復(fù)制篩選過程 S = 系統(tǒng)基表 SN = 同義詞 SQ = 服務(wù)隊列 TA = 程序集 (CLR) DML 觸發(fā)器 TF = SQL 表值函數(shù) TR = SQL DML 觸發(fā)器 U = 表(用戶定義類型) UQ = UNIQUE 約束 V = 視圖 X = 擴展存儲過程 例子 刪除用戶表 if object_id(N'表名',N'U') is not
null drop table 表名 刪除存儲過程 if object_id(N'存儲過程名',N'P') is not null drop procedure 存儲過程名 |
|