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;