该 ROUTINES 表提供了存储过程(存储过程和存储函数)的信息。该 ROUTINES 表不包括内置(本机)函数或可加载函数。
该 ROUTINES 表具有以下列:
-
SPECIFIC_NAME该过程的名称。
-
ROUTINE_CATALOG该过程所属的目录名称。该值始终为
def。 -
ROUTINE_SCHEMA该过程所属的模式(数据库)名称。
-
ROUTINE_NAME该过程的名称。
-
ROUTINE_TYPEPROCEDURE对于存储过程,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该存储过程的语言。该值来自
mysql.routines数据字典表的external_language列。 -
PARAMETER_STYLE该值始终为
SQL。 -
IS_DETERMINISTICYES或NO,取决于该过程是否定义了DETERMINISTIC特征。 -
SQL_DATA_ACCESS该过程的数据访问特征。该值为
CONTAINS SQL、NO SQL、READS SQL DATA或MODIFIES SQL DATA。 -
SQL_PATH该值始终为
NULL。 -
安全类型该例程的
SQL 安全特征。该值是DEFINER或INVOKER之一。 -
创建时间该例程创建的日期和时间。这是一个
TIMESTAMP值。 -
最后修改时间该例程最后修改的日期和时间。这是一个
TIMESTAMP值。如果该例程自创建以来未被修改,则该值与创建时间值相同。 -
SQL_MODE该例程创建或修改时生效的 SQL 模式,以及该例程执行时的模式。有关允许的值,请参阅 第 7.1.11 节,“服务器 SQL 模式”。
-
ROUTINE_COMMENT该例程的注释文本,如果没有,则该值为空。
-
DEFINER在
DEFINER子句中命名的帐户(通常是创建该例程的用户),以'格式。user_name'@'host_name' -
CHARACTER_SET_CLIENT该例程创建时的会话值
character_set_client系统变量。 -
COLLATION_CONNECTION该例程创建时的会话值
collation_connection系统变量。 -
DATABASE_COLLATION该例程关联的数据库的排序规则。
注意
-
要查看例程的信息,必须是该例程的
DEFINER用户,拥有SHOW_ROUTINE权限,在全局级别拥有SELECT权限,或者拥有CREATE ROUTINE、ALTER ROUTINE或EXECUTE权限在该例程的作用域内。如果您只有CREATE ROUTINE、ALTER ROUTINE或EXECUTE权限,则ROUTINE_DEFINITION列为空。 -
存储函数返回值的信息也可以在
PARAMETERS表中找到。存储函数的返回值行可以通过其ORDINAL_POSITION值为 0 来标识。