MariaDB/MySQL存储过程和函数学习心得(3)

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要执行的动作,这些动作是基于存储过程中的源语句进行设置的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3d0650996d891caf1eb475a5123cd232.html