ROUTINES
表提供了有关存储例程(存储过程和存储函数)的信息。ROUTINES
表不包括内置(原生)函数或可加载函数。
ROUTINES
表包含以下列:
SPECIFIC_NAME
例程的名称。
ROUTINE_CATALOG
例程所属目录的名称。此值始终为
def
。ROUTINE_SCHEMA
例程所属的模式(数据库)的名称。
ROUTINE_NAME
例程的名称。
ROUTINE_TYPE
存储过程为
PROCEDURE
,存储函数为FUNCTION
。DATA_TYPE
如果例程是存储函数,则为返回值数据类型。如果例程是存储过程,则此值为 NULL。
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
如果例程是存储函数,则为返回值数据类型。如果例程是存储过程,则此值为 NULL。
DATA_TYPE
值仅为类型名称,不包含其他信息。DTD_IDENTIFIER
值包含类型名称以及其他信息,例如精度或长度。ROUTINE_BODY
用于例程定义的语言。此值始终为
SQL
。ROUTINE_DEFINITION
例程执行的 SQL 语句的文本。
EXTERNAL_NAME
此值始终为
NULL
。EXTERNAL_LANGUAGE
存储例程的语言。该值从
mysql.routines
数据字典表的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
上次修改例程的日期和时间。这是一个
TIMESTAMP
值。如果例程自创建以来未被修改,则此值与CREATED
值相同。SQL_MODE
创建或修改例程时生效的 SQL 模式,以及例程在该模式下执行。有关允许的值,请参见 第 7.1.11 节,“服务器 SQL 模式”。
ROUTINE_COMMENT
注释的文本(如果例程有注释)。如果没有,则此值为 NULL。
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
列为NULL
。关于存储函数返回值的信息也可以在
PARAMETERS
表中找到。 存储函数的返回值行可以通过ORDINAL_POSITION
值为 0 的行来识别。