MySQL查看存储过程的3种方法(附带实例)
MySQL 存储了存储过程和函数的状态信息,用户可以使用 SHOW STATUS 语句或 SHOW CREATE 语句来查看,也可直接从系统的 information_schema 数据库中查询。
这个语句是一个 MySQL 的扩展,返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。如果没有指定样式,那么根据使用的语句,所有存储程序或存储函数的信息都会被列出。
【实例】SHOW STATUS语句示例,代码如下:
这个语句是一个 MySQL 的扩展。类似于 SHOW CREATE TABLE,它返回一个可用来重新创建已命名子程序的确切字符串。
【实例】SHOW CREATE 语句示例,代码如下:
查看的基本语法形式如下:
【实例】从Routines表中查询名称为CountProc2的存储函数的信息,代码如下:
SHOW STATUS语句查看存储过程和函数
SHOW STATUS语句可以查看存储过程和函数的状态,其基本语法结构如下:
SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']
其中,PROCEDURE 和 FUNCTION 分别表示查看存储过程和函数;LIKE 语句表示匹配存储过程或函数的名称。这个语句是一个 MySQL 的扩展,返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。如果没有指定样式,那么根据使用的语句,所有存储程序或存储函数的信息都会被列出。
【实例】SHOW STATUS语句示例,代码如下:
mysql> SHOW PROCEDURE STATUS LIKE 'C%'\G
*** 1. row ***
Db: test_db
Name: CountProc
Type: PROCEDURE
Definer: root@localhost
Modified: 2018-11-21 13:52:28
Created: 2018-11-21 13:52:28
Security_type: DEFINER
Comment:
character_set_client: gbk
collation_connection: gbk_chinese_ci
Database Collation: utf8mb4_0900_ai_ci
“SHOW PROCEDURE STATUS LIKE 'C%'\G”语句获取数据库中所有名称以字母“C”开头的存储过程的信息。通过上面的语句可以看到,这个存储函数所在的数据库为 test_db、存储函数的名称为 CountProc 等一些相关信息。SHOW CREATE语句查看存储过程和函数
除了 SHOW STATUS 之外,MySQL 还可以使用 SHOW CREATE 语句查看存储过程和函数的状态。
SHOW CREATE {PROCEDURE | FUNCTION} sp_name
PROCEDURE和FUNCTION分别表示查看存储过程和函数;sp_name参数表示匹配存储过程或函数的名称。这个语句是一个 MySQL 的扩展。类似于 SHOW CREATE TABLE,它返回一个可用来重新创建已命名子程序的确切字符串。
【实例】SHOW CREATE 语句示例,代码如下:
mysql> SHOW CREATE FUNCTION test_db.CountProc2 \G
*************************** 1. row ***************************
Function: CountProc2
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `CountProc2`(sid INT) RETURNS
int(11)
BEGIN
RETURN (SELECT COUNT(*) FROM fruits WHERE s_id = sid);
END
character_set_client: gbk
collation_connection: gbk_chinese_ci
Database Collation: utf8mb4_0900_ai_ci
执行上面的语句可以得到存储函数的名称为 CountProc2,sql_mode 为 sql 的模式,Create Function 为存储函数的具体定义语句,还有数据库设置的一些信息。从information_schema.Routines表中查看存储过程和函数
MySQL 中存储过程和函数的信息存储在 information_schema 数据库下的 Routines 表中。可以通过查询该表的记录来查询存储过程和函数的信息。查看的基本语法形式如下:
SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME=' sp_name ' ;其中,ROUTINE_NAME 字段中存储的是存储过程和函数的名称;sp_name 参数表示存储过程或函数的名称。
【实例】从Routines表中查询名称为CountProc2的存储函数的信息,代码如下:
mysql> SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME='CountProc2' AND
ROUTINE_TYPE = 'FUNCTION' \G
*************************** 1. row ***************************
SPECIFIC_NAME: CountProc2
ROUTINE_CATALOG: def
ROUTINE_SCHEMA: test_db
ROUTINE_NAME: CountProc2
ROUTINE_TYPE: FUNCTION
DATA_TYPE: int
CHARACTER_MAXIMUM_LENGTH: NULL
CHARACTER_OCTET_LENGTH: NULL
NUMERIC_PRECISION: 10
NUMERIC_SCALE: 0
DATETIME_PRECISION: NULL
CHARACTER_SET_NAME: NULL
COLLATION_NAME: NULL
DTD_IDENTIFIER: int(11)
ROUTINE_BODY: SQL
ROUTINE_DEFINITION: BEGIN
RETURN (SELECT COUNT(*) FROM fruits WHERE s_id = sid);
END
EXTERNAL_NAME: NULL
EXTERNAL_LANGUAGE: SQL
PARAMETER_STYLE: SQL
IS_DETERMINISTIC: NO
SQL_DATA_ACCESS: CONTAINS SQL
SQL_PATH: NULL
SECURITY_TYPE: DEFINER
CREATED: 2018-11-21 16:57:09
LAST_ALTERED: 2018-11-21 16:57:09
SQL_MODE: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
ROUTINE_COMMENT:
DEFINER: root@localhost
CHARACTER_SET_CLIENT: gbk
COLLATION_CONNECTION: gbk_chinese_ci
DATABASE_COLLATION: utf8mb4_0900_ai_ci
在 information_schema 数据库的 Routines 表中,存储着所有存储过程和函数的定义。使用 SELECT 语句查询 Routines 表中的存储过程和函数的定义时,一定要使用 ROUTINE_NAME 字段指定存储过程或函数的名称。否则,将查询出所有的存储过程或函数的定义。如果有存储过程和存储函数名称相同,就需要同时指定 ROUTINE_TYPE 字段,以表明查询的是哪种类型的存储程序。
ICP备案:
公安联网备案: