MySQL存储过程和函数

存储过程和函数:

创建示例代码:

DELIMITER $$

CREATE PROCEDURE proc(IN c_id INT, IN c_name VARCHAR(20), OUT count INT)
READS SQL DATA
BEGIN
    SELECT *
    FROM course
    WHERE cou_no = c_id
    OR cou_name = c_name;

    SELECT FOUND_ROWS() INTO count;
END $$

DELIMITER

另:

1、存储过程或函数可以调用其他的过程或函数。

2、{READS SQL DATA|MODIFIES SQL DATA|NO SQL|CONTAINS SQL}:这些特征值提供子程序使用数据的内在信息,这些特征值目前只是提供给服务器,并没有根据这些特征值来约束过程实际使用数据的情况。

  • READS SQL DATA:表示子程序包含读数据的语句,但不包含写数据的语句。
  • MODIFIES SQL DATA:表示子程序包含写数据的语句。
  • NO SQL:表示子程序不包含SQL语句。
  • CONTAINS SQL:表示子程序不包含读或者写数据的语句。

如果这些特征没有明确给定,默认使用的值是CONTAINS SQL。  

测试代码(分别执行):

CALL proc(1,'信息系统',@a);

SELECT @a;

删除存储过程或者函数代码:

DROP PROCEDURE proc;

NAVICAT创建存储过程和函数过程:

1、点击函数,新建函数

2、选择“过程”

3、开始编辑存储过程或函数

4、点击“保存”,填写名称

触发器:

创建代码:

DELIMITER $$
CREATE TRIGGER tri
AFTER 
INSERT ON course FOR EACH ROW
BEGIN
    INSERT INTO t1(inf) 
        VALUES("course表插入了一条数据");
END;
$$
DELIMITER ;

测试结果:

course表插入一条数据:

course表插入触发器触发:

原文地址:https://www.cnblogs.com/ForeverLover/p/4646445.html