七、MySQL存储过程

2019-08-01  本文已影响0人  Lord丶轩莫言弃

1、MySQL命令执行流程

执行流程.png

2、概述

3、存储过程的优点

4、创建存储过程

CREATE
[DEFINER = {user|CURRENT_USER}]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body

proc_parameter:
[IN|OUT|INOUT] param_name type

5、参数

6、特性

COMMENT 'string'
| {CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA}
| SQL SECURITY {DEFINER | INVOKER}

7、过程体

8、创建不带参数的存储过程

# 获取当前MySQL版本
CREATE PROCEDURE sp1()
SELECT VERSION();

9、调用存储过程

10、创建带有IN类型参数的存储过程

DELIMITER //
CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
BEGIN
DELETE FROM users WHERE id = p_id;
END
//
DELIMITER ;

11、修改存储过程

ALTER PROCEDURE sp_name [characteristic ...]
COMMENT 'string'
| {CONTAINS SQL|NO SQL|READS SQL DATA|MODIFIES SQL DATA}
| SQL SECURITY {DEFINER | INVOKER}

12、删除存储过程

DROP PROCEDURE [IF EXISTS] sp_name

13、创建带有IN和OUT类型参数的存储过程

DELIMITER //
CREATE PROCEDURE removeUserAndReturnUserNums(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED)
BEGIN
DELETE FROM users WHERE id = p_id;
SELECT count(id) FROM users INTO userNums;
END
//
DELIMITER ;
# 调用上面的带有IN和OUT类型参数的存储过程
# @nums表示接收剩余总数的变量
CALL removeUserAndReturnUserNums(27,@nums);
SELECT @nums;

14、MySQL存储过程与自定义函数的区别

上一篇下一篇

猜你喜欢

热点阅读