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 | 取值为 YES 或 NO,取决于存储例程是否使用了 DETERMINISTIC 特性的定义。目前该字段暂未使用。 |
| SQL_DATA_ACCESS | 例程的数据访问特性。该值可以为 CONTAINS SQL、NO SQL、READS SQL DATA 或者 MODIFIES SQL DATA。 |
| SQL_PATH | 此值始终为 NULL。 |
| SECURITY_TYPE | 例程的 SQL SECURITY 特性。该值为 DEFINER 或者 INVOKER。目前该字段暂未使用。 |
| CREATED | 创建例程的日期和时间。此值得类型为 TIMESTAMP。 |
| LAST_ALTERED | 最后一次修改例程的日期和时间。如果过程自创建以来尚未做任何修改,则该值与 CREATED 值相同。 |
| SQL_MODE | 创建或更改例程时有效的 SQL 模式,并在该模式下执行例程。 |
| ROUTINE_COMMENT | 例程的注释文本(如果有)。否则,此值为空。 |
| DEFINER | 在 DEFINER 子句指定的账号(通常是创建例程的用户),格式为 '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