介绍
存储过程的优点
- 增强SQL语句的功能和灵活性
- 实现较快的执行速度
- 减少网络请求
参数
- IN 参数的值必须是
在调用存储过程时指定。 - OUT 参数值可以
被存储过程改变,并且可以返回。 - INOUT 参数值
在调用时指定,并且可以被改变和返回。
创建不带参的存储过程
使用关键字
PROCEDURE来创建。调用需要使用CALL来调用;
-- 创建mysql> CREATE PROCEDURE sqlV() SELECT VERSION();Query OK, 0 rows affected (0.07 sec)-- 调用mysql> CALL sqlV();+-----------+| VERSION() |+-----------+| 8.0.11 |+-----------+
创建带有IN参数的存储过程
创建
IN类型的存储过程,定义时候需要使用关键字IN来定义才能生效,否则和自定的函数无区别。
-- 创建带有IN 类型的mysql> CREATE PROCEDURE removeId(IN p_id int)-> BEGIN-> DELETE FROM user WHERE id=p_id;-> END;;Query OK, 0 rows affected (0.03 sec)mysql> CALL removeId(2);;Query OK, 1 row affected (0.04 sec)
创建带有IN和OUT参数的存储过程
OUT返回的参数可以使用接受变量的方式。
-- 定义IN和out函数mysql> CREATE PROCEDURE InOfOut(IN p_id INT,OUT p_num INT)-> BEGIN-> DELETE FROM user WHERE id=p_id;-> SELECT COUNT(id) FROM user INTO p_num;-> END;;-- 查询mysql> CALL InOfOut(3,@sum);;-- 查询剩余数据总数mysql> SELECT @sum;;+------+| @sum |+------+| 25 |+------+
