跳到主要内容

INFORMATION_SCHEMA ROUTINES

INFORMATION_SCHEMA ROUTINES 字典视图提供有关存储例程(存储过程和存储函数)的信息,但不包括内置(本地)函数或可加载函数。 INFORMATION_SCHEMA ROUTINES 字典视图所包含的字段如下表所示。

字段名称描述
SPECIFIC_NAME存储例程的名称。
ROUTINE_CATALOG存储例程所属的目录的名称。此值始终为 def。目前该字段暂未使用。
ROUTINE_SCHEMA存储例程所属的 Schema(数据库)的名称。
ROUTINE_NAME存储例程名称,与 SPECIFIC_NAME 相同。
ROUTINE_TYPE存储例程的类型。存储过程为 PROCEDURE,存储函数为 FUNCTION
DATA_TYPE如果例程是存储函数,则返回值为数据类型;如果例程为存储过程,则该值为空。DATA_TYPE 值仅为类型名称,不包含其他信息。DTD_IDENTIFIER 值包含类型名称以及其他信息,例如精度或长度。目前该字段暂未使用。
CHARACTER_MAXIMUM_LENGTH存储函数的字符串返回值的最大长度(以字符为单位)。如果例程为存储过程,则该值为 NULL。目前该字段暂未使用。
CHARACTER_OCTET_LENGTH存储函数的字符串返回值的最大长度(以字节为单位)。如果例程是存储过程,则此值为 NULL。目前该字段暂未使用。
NUMERIC_PRECISION存储函数的数值返回值的数值范围。如果例程为存储过程,则该值为 NULL。目前该字段暂未使用。
NUMERIC_SCALE存储函数的数值返回值的数值精度。如果例程是存储过程,则此值为 NULL。目前该字段暂未使用。
DATETIME_PRECISION存储函数的时间返回值的分数部分的秒精度。如果例程为存储过程,则该值为 NULL。目前该字段暂未使用。
CHARACTER_SET_NAME存储函数的字符串返回值的字符集名称。如果例程为存储过程,则该值为 NULL。目前该字段暂未使用
COLLATION_NAME存储函数的字符串返回值的排序规则名称。如果例程为存储过程,则该值为 NULL。目前该字段暂未使用。
DTD_IDENTIFIER如果例程是存储函数,则返回值为数据类型。如果例程是存储过程,则此值为空。DATA_TYPE 值仅为类型名称,不包含其他信息。DTD_IDENTIFIER 值包含类型名称以及其他信息,例如精度或长度。
ROUTINE_BODY例程定义所使用的语言。此值始终为 SQL。
ROUTINE_DEFINITION例程所执行的 SQL 语句的文本。
EXTERNAL_NAME此值始终为 NULL
EXTERNAL_LANGUAGE存储例程的语言。目前该字段暂未使用。
PARAMETER_STYLE此值始终为 SQL。
IS_DETERMINISTIC取值为 YESNO,取决于存储例程是否使用了 DETERMINISTIC 特性的定义。目前该字段暂未使用。
SQL_DATA_ACCESS例程的数据访问特性。该值可以为 CONTAINS SQLNO SQLREADS SQL DATA 或者 MODIFIES SQL DATA
SQL_PATH此值始终为 NULL
SECURITY_TYPE例程的 SQL SECURITY 特性。该值为 DEFINER 或者 INVOKER。目前该字段暂未使用。
CREATED创建例程的日期和时间。此值得类型为 TIMESTAMP
LAST_ALTERED最后一次修改例程的日期和时间。如果过程自创建以来尚未做任何修改,则该值与 CREATED 值相同。
SQL_MODE创建或更改例程时有效的 SQL 模式,并在该模式下执行例程。
ROUTINE_COMMENT例程的注释文本(如果有)。否则,此值为空。
DEFINERDEFINER 子句指定的账号(通常是创建例程的用户),格式为 'user_name'@'host_name'
CHARACTER_SET_CLIENT创建或更改存储例程时系统变量 CHARACTER_SET_CLIENT 在当前会话的值。
COLLATION_CONNECTION创建或更改存储例程时系统变量 COLLATION_CONNECTION 在当前会话的值。
DATABASE_COLLATION创建或更改存储例程时系统变量 DATABASE_COLLATION 在当前会话的值。

示例如下:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA='test' AND ROUTINE_NAME='p1'\G
*************************** 1. row ***************************
SPECIFIC_NAME: p1
ROUTINE_CATALOG: def
ROUTINE_SCHEMA: test
ROUTINE_NAME: p1
ROUTINE_TYPE: PROCEDURE
DATA_TYPE:
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: NULL
NUMERIC_SCALE: NULL
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
DTD_IDENTIFIER: NULL
ROUTINE_BODY: SQL
ROUTINE_DEFINITION: BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END
EXTERNAL_NAME: NULL
EXTERNAL_LANGUAGE: NULL
PARAMETER_STYLE: SQL
IS_DETERMINISTIC: NO
SQL_DATA_ACCESS: CONTAINS_SQL
SQL_PATH: NULL
SECURITY_TYPE: DEFINER
CREATED: 2022-05-18 18:07:51.994639
LAST_ALTERED: 2022-05-26 18:07:51.994639
SQL_MODE: STRICT_ALL_TABLES,NO_ZERO_IN_DATE
ROUTINE_COMMENT:
DEFINER: 'root'@'%'
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_general_ci
DATABASE_COLLATION: utf8mb4_general_ci