ROUTINES (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

为当前数据库中可由当前用户访问的每个存储过程及函数返回一行。 描述返回值的列只适用于函数。 对于存储过程,这些列将为 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视图来确定对象的架构。 INFORMATION_SCHEMA 视图仅表示对象的元数据子集。 查找对象架构的唯一可靠的方式是查询 sys.objects 目录视图。
SPECIFIC_NAME nvarchar(128) 特定的目录名称。 该名称与 ROUTINE_NAME 相同。
ROUTINE_CATALOG nvarchar(128) 函数的目录名。
ROUTINE_SCHEMA nvarchar(128) 包含此函数的架构的名称。

** 重要 ** 不要使用INFORMATION_SCHEMA视图来确定对象的架构。 INFORMATION_SCHEMA 视图仅表示对象的元数据子集。 查找对象架构的唯一可靠的方式是查询 sys.objects 目录视图。
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) 函数返回值的数据类型。 如果表值函数,则返回
CHARACTER_MAXIMUM_LENGTH int 以字符为单位的最大长度(如果返回类型是字符类型)。

-1 表示 xml 和大值类型数据。
CHARACTER_OCTET_LENGTH int 以字节为单位的最大长度(如果返回类型是字符类型)。

-1 表示 xml 和大值类型数据。
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。

为了确保获得完整的定义,请在sys.sql_modules目录视图中查询OBJECT_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 最后一次修改函数的时间。

另请参阅

系统视图 (Transact-SQL)
信息架构视图 (Transact-SQL)
sys.columns (Transact-SQL)
sys.objects (Transact-SQL)
sys.procedures (Transact-SQL)
sys.sql_modules (Transact-SQL)