当前位置:   article > 正文

MySQL——查看存储过程和函数_mysql 查询function

mysql 查询function

    1.   查看存储过程和函数的状态

     用  SHOW   STATUS  语句可以查看存储过程和函数的状态,其基本的语法结构如下:

    SHOW    { PROCEDURE   |   FUNCTION   }  STATUS   [  LIKE  'pattern'  ]

    SHOW STATUS 语句是  MySQL 的一个扩展。它返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。如果没有指定样式,根据使用的语句,所有的存储程序或存储函数的信息都会被列出。PROCEDURE  和  FUNCTION  分别表示查看存储过程和函数;LIKE  语句表示匹配存储过程或函数的名称。


【例】:

  1. mysql> SHOW PROCEDURE STATUS LIKE 'C%'\G;
  2. *************************** 1. row ***************************
  3. Db: test
  4. Name: CountProc
  5. Type: PROCEDURE
  6. Definer: root@localhost
  7. Modified: 2016-02-27 11:06:11
  8. Created: 2016-02-27 11:06:11
  9. Security_type: DEFINER
  10. Comment:
  11. character_set_client: utf8
  12. collation_connection: utf8_general_ci
  13. Database Collation: latin1_swedish_ci
  14. 1 row in set (0.01 sec)


2.   查看存储过程和函数的定义

    除了SHOW STATUS  之外,还可以使用   SHOW CREATE  语句查看存储过程和函数的状态。

    SHOW   CREATE   {  PROCEDURE  |  FUNCTION  }  sp_name

    SHOW CREATE  语句是  MySQL  的一个扩展,类似于  SHOW CREATE TABLE,  它返回一个可用来重新创建已命名子程序的确切字符串。PROCEDURE  和  FUNCTION  分别表示查看存储过程和函数;  LIKE  语句表示匹配存储过程或函数的名称。

【例】SHOW CREATE  语句示例。代码如下:

  1. mysql> SHOW CREATE FUNCTION test_db.CountProc2 \G
  2. *************************** 1. row ***************************
  3. Function: CountProc2
  4. sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  5. Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `CountProc2`( sid INT ) RETURNS int(11)
  6. BEGIN
  7. RETURN ( SELECT COUNT(*) FROM fruits WHERE s_id = sid );
  8. END
  9. character_set_client: utf8
  10. collation_connection: utf8_general_ci
  11. Database Collation: utf8_general_ci
  12. 1 row in set (0.03 sec)


3.   查看存储过程和函数的信息

    在  MySQL 中,存储过程和函数的信息存储在  information_schema  数据库下的  Routines  表中,可以通过查询该表的记录来查询存储过程和函数的信息,其基本的语法形式如下:

    SELECT   *   FROM   information_schema.Routines

    WHERE   ROUTINE_NAME  =  '   sp_name  ' ;

其中,ROUTINE_NAME  字段中存储的是存储过程和函数的名称;   sp_name  参数表示存储过程或函数的名称。

【例】  从  Routines  表中查询名为  CountProc2  的存储函数的信息。代码如下:


  1. mysql> SELECT * FROM information_schema.Routines
  2. -> WHERE ROUTINE_NAME = 'CountProc2' AND ROUTINE_TYPE = 'FUNCTION' \G
  3. *************************** 1. row ***************************
  4. SPECIFIC_NAME: CountProc2
  5. ROUTINE_CATALOG: def
  6. ROUTINE_SCHEMA: test_db
  7. ROUTINE_NAME: CountProc2
  8. ROUTINE_TYPE: FUNCTION
  9. DATA_TYPE: int
  10. CHARACTER_MAXIMUM_LENGTH: NULL
  11. CHARACTER_OCTET_LENGTH: NULL
  12. NUMERIC_PRECISION: 10
  13. NUMERIC_SCALE: 0
  14. DATETIME_PRECISION: NULL
  15. CHARACTER_SET_NAME: NULL
  16. COLLATION_NAME: NULL
  17. DTD_IDENTIFIER: int(11)
  18. ROUTINE_BODY: SQL
  19. ROUTINE_DEFINITION: BEGIN
  20. RETURN ( SELECT COUNT(*) FROM fruits WHERE s_id = sid );
  21. END
  22. EXTERNAL_NAME: NULL
  23. EXTERNAL_LANGUAGE: NULL
  24. PARAMETER_STYLE: SQL
  25. IS_DETERMINISTIC: NO
  26. SQL_DATA_ACCESS: CONTAINS SQL
  27. SQL_PATH: NULL
  28. SECURITY_TYPE: DEFINER
  29. CREATED: 2018-05-22 19:54:57
  30. LAST_ALTERED: 2018-05-22 19:54:57
  31. SQL_MODE: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  32. ROUTINE_COMMENT:
  33. DEFINER: root@localhost
  34. CHARACTER_SET_CLIENT: utf8
  35. COLLATION_CONNECTION: utf8_general_ci
  36. DATABASE_COLLATION: utf8_general_ci
  37. 1 row in set (0.00 sec)


    information_schema  数据库中的  Routines  表中,存储了所有存储过程和函数的定义。使用 SELECT 语句查询  Routines 表中的存储过程和函数的定义时,一定要使用 ROUTNE_NAME  字段指定存储过程或函数的名称。否则,将查询出所有的存储过程或函数的定义。如果存储过程和存储函数名称相同,则需要要同时指定  ROUTINE_TYPE  字段表明查询的是哪种类型的存储程序。


【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/683876
推荐阅读
相关标签
  

闽ICP备14008679号