MySQL存储过程
原文链接:https://blog.liuzijian.com/post/610d9a40-a881-33ad-bb7d-d0c657ec2433.html
使用存储过程,减少编译次数和连接数据库次数,提高效率
1. 创建#
参数模式
IN
:可以作为输入,需要调用者传入值OUT
:可以作为输出,可以作为返回值INOUT
:既可以传入值,又可以返回值
语法
CREATE PROCEDURE 存储过程名(参数模式 参数名 参数类型,参数模式 参数名 参数类型,...)
BEGIN (语句只有一条 begin end 可省略)
合法有效的SQL语句;(分号)
合法有效的SQL语句;
END
示例
delimiter $
CREATE PROCEDURE pr1()
BEGIN
INSERT INTO book(`name`, price, author) VALUES('012',23.56,'lzj');
INSERT INTO book(`name`, price, author) VALUES('45',23.56,'lzj');
INSERT INTO book(`name`, price, author) VALUES('12',23.56,'lzj');
INSERT INTO book(`name`, price, author) VALUES('87',23.56,'lzj');
INSERT INTO book(`name`, price, author) VALUES('32',23.56,'lzj');
END $
调用示例
CALL name(var, var);
CALL pr1();
2. IN#
创建
delimiter $
CREATE procedure pr2(IN bid INT)
BEGIN
SELECT * FROM beauty WHERE boyfriend_id = bid;
END $
delimiter $
CREATE PROCEDURE pr3(IN username VARCHAR(20), IN `password` VARCHAR(20))
BEGIN
DECLARE res INT;
SELECT COUNT(*) INTO res FROM admin
WHERE admin.username = username AND admin.`password` = `password`;
SELECT res;
END $
调用
CALL pr2(12);
CALL pr3('john','8888');
3. OUT#
创建
delimiter $
CREATE PROCEDURE pr4(IN girl INT, OUT boy INT)
BEGIN
SELECT beauty.boyfriend_id INTO boy FROM beauty WHERE beauty.id = girl;
END $
调用
CALL pr4(1, @boy);
SELECT @boy;
4. 两个OUT的存储过程#
创建
delimiter $
CREATE PROCEDURE pr5(IN girlid INT, OUT boyid INT, OUT girlname VARCHAR(20))
BEGIN
SELECT
beauty.boyfriend_id, beauty.`name`
INTO
boyid, girlname
FROM beauty WHERE beauty.id = girlid;
END $
调用
CALL pr5(2, @boyid, @girlname);
SELECT @boyid;
SELECT @girlname;
5. INOUT#
创建
delimiter $
CREATE PROCEDURE pr6(INOUT a INT, INOUT b INT)
BEGIN
SET a = a*2;
SET b = b*2;
END $
调用
SET @i = 2;
SET @j = 4;
call pr6(@i, @j);
SELECT @i;
SELECT @j;
6. 删除#
只能同时删除一个
DROP PROCEDURE pr2;
7. 查看#
show CREATE PROCEDURE pr3;
作者:changelzj
出处:https://www.cnblogs.com/changelzj/p/18627579
版权:本作品采用「署名-非商业性使用-禁止演绎 4.0 国际」许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章