28.3.30 INFORMATION_SCHEMA ROUTINES 表
ROUTINES 表提供关于存储程序(存储过程和存储函数)的信息。ROUTINES 表不包括内置(native)函数或可加载函数。
ROUTINES 表具有以下列:
-
SPECIFIC_NAME该程序的名称。
-
ROUTINE_CATALOG该程序所属的目录的名称。这一值总是
def。 -
ROUTINE_SCHEMA该程序所属的架构(数据库)的名称。
-
ROUTINE_NAME该程序的名称。
-
ROUTINE_TYPEPROCEDURE(存储过程),FUNCTION(存储函数). -
DATA_TYPE如果该程序是存储函数,则返回值数据类型。如果该程序是存储过程,这一值为空。
DATA_TYPE值仅包含类型名称,而不包括其他信息。DTD_IDENTIFIER值包含类型名称和可能的其他信息,如精度或长度。 -
CHARACTER_MAX_LENGTH存储函数字符串返回值的最大长度(字符)。如果该routine是一个存储过程,这个值为
NULL. -
CHARACTER_OCTET_LENGTH存储函数字符串返回值的最大长度(字节)。如果该routine是一个存储过程,这个值为
NULL. -
NUMERIC_PRECISION存储函数数字返回值的数值精度。如果该routine是一个存储过程,这个值为
NULL. -
NUMERIC_SCALE存储函数数字返回值的数值scale。如果该routine是一个存储过程,这个值为
NULL. -
DATETIME_PRECISION存储函数时间戳返回值的小数秒精度。如果该routine是一个存储过程,这个值为
NULL. -
CHARACTER_SET_NAME存储函数字符字符串返回值的字符集名称。如果该routine是一个存储过程,这个值为
NULL. -
COLLATION_NAME存储函数字符字符串返回值的排序规则名称。如果该routine是一个存储过程,这个值为
NULL. -
DTD_IDENTIFIER如果该routine是一个存储函数,则返回值数据类型。如果该routine是一个存储过程,这个值为空。
数据类型值仅包含类型名称,不包括其他信息。DTD标识符值包含类型名称和可能的其他信息,如精度或长度。
-
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 模式,以及该存储程序执行时的模态。 permitted values, see Section 7.1.11, “Server SQL Modes”。
-
ROUTINE_COMMENT该存储程序的注释文本,如果存在;否则为空。
-
DEFINER在
DEFINER子句中指定的账户(通常是创建该存储程序的用户),以'user_ name'@'host_name'格式。 -
CHARACTER_SET_CLIENT在创建该存储程序时的会话值
character_set_client系统变量。 -
COLLATION_CONNECTION创建该routine时的会话值
collation_connection系统变量。 -
DATABASE_COLLATION与该routine关联的数据库的排序规则。
-
要查看关于一个routine的信息,您必须是该routine的定义者,拥有
SHOW_ROUTINE特权,或者在全局级别拥有SELECT特权,或者在包含该routine的范围内拥有CREATE_ROUTINE、ALTER_ROUTINE或EXECUTE特权。如果您只有CREATE_ROUTINE、ALTER_ROUTINE或EXECUTE特权,ROUTINE_DEFINITION列将为NULL。 -
关于存储函数返回值的信息也可以在
PARAMETERS表中找到。存储函数的返回值行可以通过ORDINAL_POSITION值为0来识别。