OBJECT_NAME (Transact-SQL)
更新: 2006 年 12 月 12 日
傳回結構描述範圍物件的資料庫物件名稱。如需以結構描述為範圍物件的清單,請參閱<sys.objects (Transact-SQL)>。
語法
OBJECT_NAME ( object_id [, database_id ] )
引數
- object_id
這是要使用之物件的識別碼。object_id 是 int,假設為指定資料庫或目前資料庫內容中的結構描述範圍物件。
- database_id
這是要用來查閱物件之資料庫的識別碼。database_id 是 int。
傳回類型
sysname
例外
當發生錯誤,或呼叫者沒有檢視物件的權限時,便會傳回 NULL。如果目標資料庫將 AUTO_CLOSE 選項設為 ON,函數會開啟資料庫。
使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。這表示發出中繼資料的內建函數 (例如,OBJECT_NAME) 會在使用者不具有該物件任何權限時傳回 NULL。如需詳細資訊,請參閱<中繼資料可見性組態>和<中繼資料可見性疑難排解>。
備註
系統函數可以用於選取清單、WHERE 子句以及任何可以使用運算式的位置。如需詳細資訊,請參閱<運算式>和<WHERE>。
這個系統函數傳回的值會使用目前資料庫的定序。
SQL Server Database Engine 假設 object_id 在目前資料庫的內容中。參考另一資料庫中之 object_id 的查詢會傳回 NULL 或不正確的結果。例如,在下列查詢中,目前資料庫內容便是 AdventureWorks
。Database Engine 會嘗試傳回這個資料庫 (而不是查詢之 FROM 子句中所指定的資料庫) 中指定之物件識別碼的物件名稱。因此,會傳回不正確的資訊。
USE AdventureWorks;
GO
SELECT DISTINCT OBJECT_NAME(object_id)
FROM master.sys.objects;
GO
在 Service Pack 2 中,您可以藉由指定資料庫識別碼,在另一個資料庫的內容中解析物件名稱。下列範例在 OBJECT_SCHEMA_NAME
函數中指定 master
資料庫的資料庫識別碼,然後傳回正確的結果。
USE AdventureWorks;
GO
SELECT DISTINCT OBJECT_SCHEMA_NAME(object_id, 1) AS schema_name
FROM master.sys.objects;
GO
權限
需要物件的 ANY 權限。若要指定資料庫識別碼,也需要資料庫的 CONNECT 權限,或必須啟用 Guest 帳戶。
範例
A. 在 WHERE 子句中使用 OBJECT_NAME
下列範例會從 sys.objects
目錄檢視中,傳回 SELECT
陳述式 WHERE
子句中的 OBJECT_NAME
所指定之物件的資料行。
USE AdventureWorks;
GO
DECLARE @MyID int;
SET @MyID = (SELECT OBJECT_ID('AdventureWorks.Production.Product',
'U'));
SELECT name, object_id, type_desc
FROM sys.objects
WHERE name = OBJECT_NAME(@MyID);
GO
B. 傳回物件結構描述名稱和物件名稱
下列範例會針對不是特定或準備陳述式的所有快取查詢計劃,傳回物件結構描述名稱、物件名稱和 SQL 文字。
SELECT DB_NAME(st.dbid) AS database_name,
OBJECT_SCHEMA_NAME(st.objectid, st.dbid) AS schema_name,
OBJECT_NAME(st.objectid, st.dbid) AS object_name,
st.text AS query_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE st.objectid IS NOT NULL;
GO
C. 傳回三段式物件名稱
下列範例會針對所有資料庫中的所有物件,傳回資料庫、結構描述和物件名稱,以及 sys.dm_db_index_operational_stats
動態管理檢視中的所有其他資料行。
SELECT QUOTENAME(DB_NAME(database_id))
+ N'.'
+ QUOTENAME(OBJECT_SCHEMA_NAME(object_id, database_id))
+ N'.'
+ QUOTENAME(OBJECT_NAME(object_id, database_id))
, *
FROM sys.dm_db_index_operational_stats(null, null, null, null);
GO
請參閱
參考
中繼資料函數 (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)
OBJECT_ID (Transact-SQL)
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 12 月 12 日 |
|
2006 年 7 月 17 日 |
|