共用方式為


ROUTINES (Transact-SQL)

針對目前資料庫中目前使用者所能存取的每個預存程序和函數,各傳回一個資料列。描述傳回值的資料行只適用於函數。如果是預存程序,這些資料行就是 NULL。

若要從這些檢視中擷取資訊,請指定 INFORMATION_SCHEMA.view_name 的完整名稱。

[!附註]

ROUTINE_DEFINITION 資料行包含建立函數或預存程序的來源陳述式。這些來源陳述式可能包含內嵌歸位字元。如果您將這個資料行傳回用文字格式來顯示結果的應用程式,ROUTINE_DEFINITION 結果中的內嵌歸位字元可能會影響整體結果集的格式。如果您選取 ROUTINE_DEFINITION 資料行,您必須針對內嵌歸位字元來進行調整;例如,將結果集傳回方格,或將 ROUTINE_DEFINITION 傳回它自己的文字框。

資料行名稱

資料類型

描述

SPECIFIC_CATALOG

nvarchar(128)

目錄的特定名稱。這個名稱與 ROUTINE_CATALOG 相同。

SPECIFIC_SCHEMA

nvarchar(128)

結構描述的特定名稱。

重要注意事項重要事項
請勿使用 INFORMATION_SCHEMA 檢視來判斷物件的結構描述。要尋找物件的結構描述,唯一可靠的方式就是查詢 sys.objects 目錄檢視或使用 OBJECT_SCHEMA_NAME 函數。

SPECIFIC_NAME

nvarchar(128)

目錄的特定名稱。這個名稱與 ROUTINE_NAME 相同。

ROUTINE_CATALOG

nvarchar(128)

函數的目錄名稱。

ROUTINE_SCHEMA

nvarchar(128)

包含這個函數的結構描述名稱。

重要注意事項重要事項
請勿使用 INFORMATION_SCHEMA 檢視來判斷物件的結構描述。要尋找物件的結構描述,唯一可靠的方式就是查詢 sys.objects 目錄檢視或使用 OBJECT_SCHEMA_NAME 函數。

ROUTINE_NAME

nvarchar(128)

函數的名稱。

ROUTINE_TYPE

nvarchar(20)

傳回 PROCEDURE (預存程序) 或 FUNCTION (函數)。

MODULE_CATALOG

nvarchar(128)

NULL。保留以供日後使用。

MODULE_SCHEMA

nvarchar(128)

NULL。保留供日後使用。

MODULE_NAME

nvarchar(128)

NULL。保留供日後使用。

UDT_CATALOG

nvarchar(128)

NULL。保留供日後使用。

UDT_SCHEMA

nvarchar(128)

NULL。保留供日後使用。

UDT_NAME

nvarchar(128)

NULL。保留供日後使用。

DATA_TYPE

nvarchar(128)

函數傳回值的資料類型。如果是資料表值函數,便傳回 table。

CHARACTER_MAXIMUM_LENGTH

int

傳回類型是字元類型時的最大長度 (以字元為單位)。

如果是 xml 及大數值類型資料,便傳回 -1。

CHARACTER_OCTET_LENGTH

int

傳回類型是字元類型時的最大長度 (以位元組為單位)。

如果是 xml 及大數值類型資料,便傳回 -1。

COLLATION_CATALOG

nvarchar(128)

一律傳回 NULL。

COLLATION_SCHEMA

nvarchar(128)

一律傳回 NULL。

COLLATION_NAME

nvarchar(128)

傳回值的定序名稱。如果是非字元類型,則傳回 NULL。

CHARACTER_SET_CATALOG

nvarchar(128)

一律傳回 NULL。

CHARACTER_SET_SCHEMA

nvarchar(128)

一律傳回 NULL。

CHARACTER_SET_NAME

nvarchar(128)

傳回值字元集的名稱。如果是非字元類型,則傳回 NULL。

NUMERIC_PRECISION

smallint

傳回值的數值有效位數。如果是非數值類型,則傳回 NULL。

NUMERIC_PRECISION_RADIX

smallint

傳回值的數值有效位數基數。如果是非數值類型,則傳回 NULL。

NUMERIC_SCALE

smallint

傳回值的小數位數。如果是非數值類型,則傳回 NULL。

DATETIME_PRECISION

smallint

當傳回值的類型是 datetime 時,秒的小數有效位數。否則,便傳回 NULL。

INTERVAL_TYPE

nvarchar(30)

NULL。保留供日後使用。

INTERVAL_PRECISION

smallint

NULL。保留供日後使用。

TYPE_UDT_CATALOG

nvarchar(128)

NULL。保留供日後使用。

TYPE_UDT_SCHEMA

nvarchar(128)

NULL。保留供日後使用。

TYPE_UDT_NAME

nvarchar(128)

NULL。保留供日後使用。

SCOPE_CATALOG

nvarchar(128)

NULL。保留供日後使用。

SCOPE_SCHEMA

nvarchar(128)

NULL。保留供日後使用。

SCOPE_NAME

nvarchar(128)

NULL。保留供日後使用。

MAXIMUM_CARDINALITY

bigint

NULL。保留供日後使用。

DTD_IDENTIFIER

nvarchar(128)

NULL。保留供日後使用。

ROUTINE_BODY

nvarchar(30)

Transact-SQL 函數傳回 SQL,外部寫入的函數傳回 EXTERNAL。

函數一律是 SQL。

ROUTINE_DEFINITION

nvarchar(4000)

如果函數或預存程序未加密,則傳回函數或預存程序之定義文字的前 4000 個字元。否則,便傳回 NULL。

為了確定您可取得完整定義,請查詢 OBJECT_DEFINITION 函數或 sys.sql_modules 目錄檢視中的 definition 資料行。

EXTERNAL_NAME

nvarchar(128)

NULL。保留供日後使用。

EXTERNAL_LANGUAGE

nvarchar(30)

NULL。保留供日後使用。

PARAMETER_STYLE

nvarchar(30)

NULL。保留供日後使用。

IS_DETERMINISTIC

nvarchar(10)

如果常式具決定性,便傳回 YES。

如果常式不具決定性,便傳回 NO。

預存程序一律傳回 NO。

SQL_DATA_ACCESS

nvarchar(30)

傳回下列其中一值:

NONE = 函數不包含 SQL。

CONTAINS = 函數可能包含 SQL。

READS = 函數可能讀取 SQL 資料。

MODIFIES = 函數可能修改 SQL 資料。

所有函數都傳回 READS,所有預存程序都傳回 MODIFIES。

IS_NULL_CALL

nvarchar(10)

指出如果常式的任何引數是 NULL,是否要呼叫常式。

SQL_PATH

nvarchar(128)

NULL。保留供日後使用。

SCHEMA_LEVEL_ROUTINE

nvarchar(10)

如果是結構描述層級函數,便傳回 YES;如果不是結構描述層級函數,便傳回 NO。

一律傳回 YES。

MAX_DYNAMIC_RESULT_SETS

smallint

常式傳回的最大動態結果集數目。

如果是函數,便傳回 0。

IS_USER_DEFINED_CAST

nvarchar(10)

如果是使用者自訂轉換函數,便傳回 YES;如果不是使用者自訂轉換函數,便傳回 NO。

一律傳回 NO。

IS_IMPLICITLY_INVOCABLE

nvarchar(10)

如果可以隱含地叫用常式,便傳回 YES;如果不能隱含地叫用常式,便傳回 NO。

一律傳回 NO。

CREATED

datetime

建立常式的時間。

LAST_ALTERED

datetime

上次修改函數的時間。

範例

下列範例會傳回資料庫中每個預存程序或使用者定義函數的相關資訊。

USE AdventureWorks;
GO

SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, 
       ROUTINE_DEFINITION AS [First 4000 characters], CREATED, LAST_ALTERED
FROM INFORMATION_SCHEMA.ROUTINES
ORDER BY ROUTINE_TYPE;