OBJECT_DEFINITION (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

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

Transact-SQL 語法慣例

Syntax

OBJECT_DEFINITION ( object_id )  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

object_id
這是所要使用的物件識別碼。 object_idint,並會用來代表目前資料庫內容中的物件。

傳回型別

nvarchar(max)

例外狀況

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

使用者只能檢視使用者擁有或被授與某些權限之安全性實體的中繼資料。 這表示發出中繼資料的內建函數 (例如,OBJECT_DEFINITION) 會在使用者不具有該物件任何權限時傳回 NULL。 如需相關資訊,請參閱 Metadata Visibility Configuration

備註

SQL Server 資料庫引擎假設 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. 傳回使用者自訂物件的來源文字

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

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

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

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

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

另請參閱

中繼資料函數 (Transact-SQL)
OBJECT_NAME (Transact-SQL)
OBJECT_ID (Transact-SQL)
sp_helptext (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.server_sql_modules (Transact-SQL)