MySQL 存储过程
CREATE PROCEDURE 封装业务逻辑 · 难度:高级 · +20XP
存储过程 — 数据库端编程
存储过程是预编译的 SQL 代码块,可以接收参数、包含控制流程。一次创建,多次调用。减少网络传输,提升性能。
创建存储过程
DELIMITER //
CREATE PROCEDURE get_top_products(IN min_price DECIMAL(10,2), IN lim INT)
BEGIN
SELECT name, price, stock FROM products
WHERE price >= min_price ORDER BY stock DESC LIMIT lim;
END //
DELIMITER ;
-- 调用
CALL get_top_products(100, 5);
带输出参数
CREATE PROCEDURE get_stats(OUT total INT, OUT avg_price DECIMAL(10,2))
BEGIN
SELECT COUNT(*), AVG(price) INTO total, avg_price FROM products;
END;
CALL get_stats(@total, @avg);
SELECT @total, @avg;
存储过程 vs 函数
| 过程 | 函数 |
|---|---|
| CALL 调用 | SELECT 中调用 |
| 可返回多结果集 | 返回单个值 |
| 支持 IN/OUT/INOUT 参数 | 只有 RETURNS |