【Mysql】八、Mysql基础篇 --- 存储过程

什么是存储过程?
存储过程是一组预先=编译好的sql语句集合,执行过的sql会暂存,之后再次执行该语句不需要重新编译。

好处:1.提高代码的复用度;2.简化操作;3.减少和数据库的连接次数。

坏处:坏处大于好处
在这里插入图片描述
在这里插入图片描述
存储过程就是省略上述过程中的语法分析和编译这2个环节

一、基本语法

  1. 创建存储过程
-- 创建存储过程
SELECT PROCEDURE 存储过程名称(参数列表)
BEGIN
	-- 方法体
END
  1. 存储过程的方法参数详解
-- 参数列别包含三部分:参数模式 参数名 参数类型
存储过程名称(IN username VARCHAR(5))
  1. 方法体
    方法体内部的每条sql都需要以分号(;)结尾
    存储过程以DELIMITER $结尾

  2. 调用存储过程
    CALL 存储过程名(参数列表)

二、案例分析

1、空参 – 存储过程

定义存储过程

DELIMITER $$
CREATE PROCEDURE myp()
BEGIN 
	INSERT INTO user_p(`last_name`, `name`)
	VALUES('aaa', 'bbb'),('ccc', 'ddd'),( 'ddd', 'fff');
END $$

调用存储过程

-- 调用也需要使用 DELIMITER 定义结束符号结尾
CALL myp(); $$
2、in模式 – 存储过程

定义存储过程

DELIMITER $$
DROP PROCEDURE IF EXISTS myp
CREATE PROCEDURE myp(IN username VARCHAR(10))
BEGIN
UPDATE user_p SET name = '更改姓名后的结果'
WHERE name = username;
END $$

调用存储过程

-- 调用也需要使用 DELIMITER 定义结束符号结尾
CALL myp('w.deng'); $$
3、out模式 – 存储过程

定义存储过程

CREATE PROCEDURE myp(IN username VARCHAR(10), OUT users VARCHAR(255) )
BEGIN
UPDATE user_p SET name = '更改姓名后的结果'
WHERE name = username;
SELECT `name` INTO users FROM user_p WHERE name = 'w.deng';
END $$

调用存储过程

-- 调用也需要使用 DELIMITER 定义结束符号结尾
CALL myp('ddd', @users); $$

查询out结果

SELECT @users $$

在这里插入图片描述

4、inout模式 – 存储过程

定义存储过程

CREATE PROCEDURE mm(INOUT a INT)
BEGIN 
 SET a=1 ;
END; $$

调用存储过程

-- 定义变量
SET @a = 10 $$
-- 调用存储过程
CALL mm(@a) $$

在这里插入图片描述

三、删除存储过程

DROP PROCEDURE IF EXISTS `存储过程名`

四、查看存储过程

SHOW CREATE PROCEDURE `存储过程名`

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼小鱼啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值