OBJECT_DEFINITION (Transact-SQL)

傳回指定物件定義的 Transact-SQL 來源文字。

主題連結圖示Transact-SQL 語法慣例

語法

OBJECT_DEFINITION ( object_id )

引數

  • object_id
    這是要用的物件識別碼。object_id 是 int,假設為代表目前資料庫內容中的物件。

傳回類型

nvarchar(max)

例外

當發生錯誤,或呼叫者沒有檢視物件的權限時,便會傳回 NULL。

使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。這表示發出中繼資料的內建函數 (例如,OBJECT_DEFINITION) 會在使用者不具有該物件任何權限時傳回 NULL。如需詳細資訊,請參閱<中繼資料可見性組態>和<中繼資料可見性疑難排解>。

備註

SQL Server Database Engine 假設 object_id 在目前資料庫內容中。物件定義的定序一律符合發出呼叫之資料庫內容的定序。

OBJECT_DEFINITION 適用於下列物件類型:

  • C = 檢查條件約束

  • D = 預設值 (條件約束或獨立式)

  • P = SQL 預存程序

  • FN = SQL 純量函數

  • R = 規則

  • RF = 複寫篩選程序

  • TR = SQL 觸發程序 (結構描述範圍的 DML 觸發程序,或在資料庫或伺服器範圍的 DDL 觸發程序)

  • IF = SQL 嵌入資料表值函數

  • TF = SQL 資料表值函數

  • V = 檢視

權限

系統物件定義是公開顯示的。凡具有 ALTER、CONTROL、TAKE OWNERSHIP 或 VIEW DEFINITION 任一權限的物件擁有者或被授與者,都看得到使用者物件的定義。db_ownerdb_ddladmindb_securityadmin 固定資料庫角色的成員隱含地擁有這些權限。

範例

A. 傳回使用者自訂物件的來源文字

下列範例會傳回 Person 結構描述中 uAddress 使用者自訂觸發程序的定義。內建函數 OBJECT_ID 用來將觸發程序的物件識別碼傳回給 OBJECT_DEFINITION 陳述式。

USE AdventureWorks;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.uAddress')) AS [Trigger Definition]; 
GO

B. 傳回系統物件的來源文字

下列範例會傳回系統預存程序 sys.sp_columns 的定義。

USE AdventureWorks;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID(N'sys.sp_columns')) AS [Object Definition];
GO