20. ROUTINES

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)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`information_schema.routines` 是 MySQL 系统数据库 `information_schema` 中的一个,用于存储数据库中所有存储过程和函数的信息。该包含以下列: - `SPECIFIC_NAME`:存储过程或函数的唯一名称。 - `ROUTINE_CATALOG`:存储过程或函数所属的数据库名称。 - `ROUTINE_SCHEMA`:存储过程或函数所属的数据库名称。 - `ROUTINE_NAME`:存储过程或函数的名称。 - `ROUTINE_TYPE`:存储过程或函数的类型,取值为 "PROCEDURE" 或 "FUNCTION"。 - `DTD_IDENTIFIER`:存储过程或函数的返回类型,以及参数的类型和数量的描述。 - `ROUTINE_BODY`:存储过程或函数的实现体,取值为 "SQL" 或 "NATIVE"。 - `ROUTINE_DEFINITION`:存储过程或函数的定义体,即存储过程或函数的 SQL 语句。 - `EXTERNAL_NAME`:当存储过程或函数是外部函数时,存储外部函数的名称。 - `EXTERNAL_LANGUAGE`:当存储过程或函数是外部函数时,存储外部函数的编程语言。 使用 `information_schema.routines` 可以方便地查询数据库中所有存储过程和函数的信息,例如可以通过以下语句查询数据库中所有存储过程和函数的名称和类型: ```sql SELECT ROUTINE_NAME, ROUTINE_TYPE FROM information_schema.routines; ``` 该还可以用于查询指定存储过程或函数的详细信息,例如可以通过以下语句查询指定存储过程的定义体: ```sql SELECT ROUTINE_DEFINITION FROM information_schema.routines WHERE ROUTINE_NAME = 'my_proc'; ``` 需要注意的是,只有当用户对存储过程或函数有访问权限时,才能查询到该存储过程或函数的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值