MySQL视图、索引
10 MySQL存储过程和触发器
10.1 MySQL存储过程
10.2 MySQL创建存储过程
10.3 MySQL查看存储过程
10.4 MySQL修改存储过程
10.5 MySQL删除存储过程
10.6 MySQL存储函数
10.7 MySQL调用存储过程和函数
10.8 MySQL变量的使用
10.9 MySQL定义条件和处理程序
10.10 MySQL游标
10.11 MySQL流程控制语句
10.12 MySQL触发器到底是什么?
10.13 MySQL创建触发器
10.14 MySQL查看触发器
10.15 MySQL修改和删除触发器
10.16 MySQL如何周期性执行某一命令或SQL语句
10.17 MySQL如何创建并执行事件?
10.18 MySQL查看事件状态信息
10.19 MySQL修改和删除事件
MySQL事务和字符集 MySQL用户管理 MySQL数据库备份与恢复 MySQL日志 MySQL性能优化
创建好存储过程后,用户可以通过 SHOW ATATUS 语句来查看存储过程的状态,也可以通过 SHOW CREATE 语句来查看存储过程的定义。本节主要讲解查看存储过程的状态和定义的方法。 查看存储过程的状态 MySQL 中可以通过 SHOW STATUS 语句查看存储过程的状态,其基本语法形式如下: SHOW PROCEDURE STATUS LIKE 存储过程名;

LIKE 存储过程名 用来匹配存储过程的名称,LIKE 不能省略。 创建数据表 studentinfo,SQL 语句如下: CREATE TABLE `studentinfo` ( `ID` int(11) NOT NULL, `NAME` varchar(20) DEFAULT NULL, `SCORE` decimal(4,2) DEFAULT NULL, `SUBJECT` varchar(20) DEFAULT NULL, `TEACHER` varchar(20) DEFAULT NULL, PRIMARY KEY (`ID`) 向数据表 studentinfo 中插入数据,SQL 语句和执行结果如下: mysql> INSERT INTO studentinfo(id,name,score) VALUES(1,"zhangsan",80),(2,"lisi","70"); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 创建存储过程 showstuscore,SQL 语句和运行结果如下: mysql> DELIMITER // mysql> CREATE PROCEDURE showstuscore() -> BEGIN -> SELECT id,name,score FROM studentinfo; -> END // Query OK, 0 rows affected (0.07 sec) 下面查询名为 showstuscore 的存储过程的状态,SQL 语句和运行结果如下: mysql> SHOW PROCEDURE STATUS LIKE 'showstuscore' \G *************************** 1. row *************************** Db: test Name: showstuscore Type: PROCEDURE Definer: root@localhost Modified: 2020-02-20 13:34:50 Created: 2020-02-20 13:34:50 Security_type: DEFINER Comment: character_set_client: gbk collation_connection: gbk_chinese_ci Database Collation: latin1_swedish_ci 1 row in set (0.01 sec) mysql> SHOW PROCEDURE STATUS LIKE 'show%' \G *************************** 1. row *************************** Db: test Name: showstuscore Type: PROCEDURE Definer: root@localhost Modified: 2020-02-21 09:34:50 Created: 2020-02-21 09:34:50 Security_type: DEFINER Comment: character_set_client: gbk collation_connection: gbk_chinese_ci Database Collation: latin1_swedish_ci 1 row in set (0.00 sec) 查询结果显示了存储过程的创建时间、修改时间和字符集等信息。 查看存储过程的定义 MySQL 中可以通过 SHOW CREATE 语句查看存储过程的状态,语法格式如下: SHOW CREATE PROCEDURE 存储过程名;

下面使用 SHOW CREATE 查询名为 showstuscore 的存储过程的状态,SQL 语句和运行结果如下: mysql> SHOW CREATE PROCEDURE showstuscore \G *************************** 1. row *************************** Procedure: showstuscore sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `showstuscore`() BEGIN SELECT id,name,score FROM studentinfo; character_set_client: gbk collation_connection: gbk_chinese_ci Database Collation: latin1_swedish_ci 1 row in set (0.01 sec) 查询结果显示了存储过程的定义和字符集信息等。
SHOW STATUS 语句只能查看存储过程是操作的哪一个数据库、存储过程的名称、类型、谁定义的、创建和修改时间、字符编码等信息。但是,这个语句不能查询存储过程的集体定义,如果需要查看详细定义,需要使用 SHOW CREATE 语句。 存储过程的信息都存储在 information_schema 数据库下的 Routines 表中,可以通过查询该表的记录来查询存储过程的信息,SQL 语句如下: SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME=存储过程名;

在 information_schema 数据库下的 routines 表中,存储着所有存储过程的定义。所以,使用 SELECT 语句查询 routines 表中的存储过程和函数的定义时,一定要使用 routine_name 字段指定存储过程的名称,否则,将查询出所有的存储过程的定义。

关注公众号「 站长严长生 」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。

微信扫码关注公众号