扫盲 2026.10.30 08:55 21 次浏览 0 条评论

MySQL存储过程入门了解

存储过程说白了就是把一堆SQL语句打包存进数据库,起个名字,以后调名字就自动跑,不用每次把一长串SQL重新发一遍。

创建时得先用 DELIMITER 把结束符从分号改成别的,不然数据库看到第一个分号就以为写完了。参数分 IN 只进不出、OUT 只出不进、INOUT 能进能出,几个参数用逗号隔开。整个逻辑用 BEGIN...END 包着,中间随便写多少条SQL。

-- 改结束符,避免提前截断
DELIMITER //
CREATE PROCEDURE get_user(IN uid INT)
BEGIN
  SELECT * FROM users WHERE id = uid;
END //
DELIMITER ;  -- 改回来

CALL get_user(1);  -- 调用

带返回值就用 OUT,跑完再把值塞出来。

DELIMITER //
CREATE PROCEDURE count_user(OUT num INT)
BEGIN
  SELECT COUNT(*) INTO num FROM users;
END //
DELIMITER ;

CALL count_user(@n);
SELECT @n;

日常几个命令记住就够用:CALL 调用、DROP PROCEDURE 删除、SHOW PROCEDURE STATUS 看有哪些、SHOW CREATE PROCEDURE 名字 看具体代码。改逻辑一般就是先删掉再重建,省事。

踩坑点:DELIMITER 改完必须改回来,不然后面普通语句全报错;参数名别跟表字段重名,容易查不出数据;存储过程调试不方便,写复杂了不如直接写SQL。

说点什么 0

行思随记

欢迎来到:行思随记