show {procedure|function} status like 'pattern'; -- 查看routine的基本信息
show create {procedure|function} proc_name; -- 查看routine的创建语句
show {procedure|function} code routine_name; -- 查看MariaDB内部是如何操作routine中各语句的
从information_schema.routines中查看存储过程和函数的信息,这个比show status更详细一点。
select * from information_schema.routines where routines_name='xxx'\G
这里说明下show code功能,这个功能必须要在支持debug的MariaDB上才能使用,可以在编译时使用选项"--with-debug"启用该功能。
例如:
DELIMITER $$
CREATE PROCEDURE p1 ()
BEGIN
DECLARE fanta INT DEFAULT 55;
DROP TABLE t2;
LOOP
INSERT INTO t3 VALUES (fanta);
END LOOP;
END$$
delimiter ;
SHOW PROCEDURE CODE p1;
+-----+----------------------------------------+
| Pos | Instruction |
+-----+----------------------------------------+
| 0 | set fanta@0 55 |
| 1 | stmt 9 "DROP TABLE t2" |
| 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" |
| 3 | jump 2 |
+-----+----------------------------------------+
其中第一列是从0开始的序列值,表示存储过程中所执行的动作先后顺序。第二列是mariadb要执行的动作,这些动作是基于存储过程中的源语句进行设置的。