20.ROUTINES

mac2022-06-30  55

20. ROUTINES

ROUTINES表提供有关存储例程(存储过程和存储函数)的信息。 ROUTINES表不包含内置SQL函数或用户定义函数(UDF)。

名为mysql.proc Name的列表示与INFORMATION_SCHEMA ROUTINES表列对应的mysql.proc表列(如果有)。

ROUTINES表有以下列:

SPECIFIC_NAME :例程的名称。ROUTINE_CATALOG :例程所属目录的名称。该值始终为def。ROUTINE_SCHEMA :例程所属schema(database)的名称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计算EXTERNAL_LANGUAGE是根据: 如果mysql.proc.language =’SQL’,则EXTERNAL_LANGUAGE为NULL否则,EXTERNAL_LANGUAGE就是mysql.proc.language中的内容。但是,我们还没有外部语言,因此它始终为NULL。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模式,以及执行例程的情况。有关允许的值,请参见“服务器SQL模式”。ROUTINE_COMMENT :如果例程有注释,则以文本显示。反正,则为空。DEFINER :以“user_name”@“host_name”格式创建例程的用户的帐户。CHARACTER_SET_CLIENT :创建例程时character_set_client系统变量的会话值。COLLATION_CONNECTION :创建例程时collat​​ion_connection系统变量的会话值。DATABASE_COLLATION :与例程关联的数据库的排序规则。

Notes

有关存储的函数返回值的信息也可在PARAMETERS表中找到。存储函数的返回值行可以标识为ORDINAL_POSITION值为0的行。 mysql> select * from routines limit 47,1\G *************************** 1. row *************************** SPECIFIC_NAME: version_patch ROUTINE_CATALOG: def ROUTINE_SCHEMA: sys ROUTINE_NAME: version_patch ROUTINE_TYPE: FUNCTION DATA_TYPE: tinyint CHARACTER_MAXIMUM_LENGTH: NULL CHARACTER_OCTET_LENGTH: NULL NUMERIC_PRECISION: 3 NUMERIC_SCALE: 0 DATETIME_PRECISION: NULL CHARACTER_SET_NAME: NULL COLLATION_NAME: NULL DTD_IDENTIFIER: tinyint(3) unsigned ROUTINE_BODY: SQL ROUTINE_DEFINITION: BEGIN RETURN SUBSTRING_INDEX(SUBSTRING_INDEX(VERSION(), '-', 1), '.', -1); END EXTERNAL_NAME: NULL EXTERNAL_LANGUAGE: NULL PARAMETER_STYLE: SQL IS_DETERMINISTIC: NO SQL_DATA_ACCESS: NO SQL SQL_PATH: NULL SECURITY_TYPE: INVOKER CREATED: 2018-07-31 16:44:11 LAST_ALTERED: 2018-07-31 16:44:11 SQL_MODE: ROUTINE_COMMENT: Description Returns the patch release version of MySQL Server. Returns TINYINT UNSIGNED Example mysql> SELECT VERSION(), sys.version_patch(); +--------------------------------------+---------------------+ | VERSION() | sys.version_patch() | +--------------------------------------+---------------------+ | 5.7.9-enterprise-commercial-advanced | 9 | +--------------------------------------+---------------------+ 1 row in set (0.00 sec) DEFINER: mysql.sys@localhost CHARACTER_SET_CLIENT: utf8 COLLATION_CONNECTION: utf8_general_ci DATABASE_COLLATION: utf8_general_ci 1 row in set (0.01 sec)

转载于:https://www.cnblogs.com/wanbin/p/9514630.html

最新回复(0)