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