ROUTINES 表提供有关存储例程(存储过程和存储函数)的信息。ROUTINES 表不包括内置(原生)函数或可加载函数。
ROUTINES 表包含以下列:
SPECIFIC_NAME例程的名称。
ROUTINE_CATALOG例程所属目录的名称。此值始终为
def。ROUTINE_SCHEMA例程所属模式(数据库)的名称。
ROUTINE_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存储例程的语言。该值从
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。SECURITY_TYPE例程
SQL SECURITY特性。该值为DEFINER或INVOKER之一。CREATED创建例程的日期和时间。这是一个
TIMESTAMP值。LAST_ALTERED上次修改例程的日期和时间。这是一个
TIMESTAMP值。如果例程自创建以来未进行修改,则此值与CREATED值相同。SQL_MODE创建或更改例程时生效的 SQL 模式,以及例程在其下执行的模式。有关允许的值,请参见 第 7.1.11 节“服务器 SQL 模式”。
ROUTINE_COMMENT注释的文本(如果例程有注释)。如果没有,则此值为空。
DEFINERDEFINER子句中命名的帐户(通常是创建例程的用户),格式为'。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权限。ROUTINE_DEFINITION列在您只有CREATE ROUTINE、ALTER ROUTINE或EXECUTE权限时为NULL。有关存储函数返回值的信息也可以在
PARAMETERS表中找到。存储函数的返回值行可以标识为ORDINAL_POSITION值为 0 的行。