mysql存储过程菜鸟_2021-01-27 mysql存储过程

存储过程我也没怎么用过,很浅显,大多都是直接调用,类似于一个封装好的接口一样,传入指定参数(或者不传),然后执行约定好的逻辑,执行;

18668ea12bf2

image.png

以这个为例:findbyname

DELIMITER //

USE assets //

DROP PROCEDURE IF EXISTS `findbyname`//

CREATE PROCEDURE findbyname(IN na VARCHAR(55)CHARACTER SET utf8)

BEGIN

SELECT device_code FROM ass_device WHERE device_name = na OR device_id = na;

END //

DELIMITER ;

DELIMITER 声明/定义

DELIMITER // 重新定义 将默认的; 改为// // 表示一句话的结束

USE assets // 用assets这个库 // 结束

DROP PROCEDURE IF EXISTS findbyname// 如果存在findbyname同名的存储过程删除 // 结束

CREATE PROCEDURE findbyname(IN na VARCHAR(55) CHARACTER SET utf8)

创建一个名字为findbyname 的存储过程 IN 表示入参 na 参数名

VARCHAR(55) CHARACTER SET utf8 入参大小 以及入参编码格式 不设置格式,中文会乱码查询不到

BEGIN 开始

END // 结束语 表示存储过程结束 // 结束

DELIMITER ; 恢复mysql中存储过程的默认结束 ; 为什么一定要这样呢?开始将默认值 ; 改为 // 最后恢复为 ; 咋回事呢????????

因为:

mysql 语句中 也是以分号 ; 结尾的:SELECT device_code FROM ass_device WHERE device_name = na OR device_id = na ; 不更改为 // 会导致存储过程异常,所以必须改,否则编译不过去

直接运行 上述语句就可以创建成功一个名字为findbyname 的存储过程

这个存储过程的作用很简单,就是传入一个参数,当 device_name = na OR device_id = na 和他相等的查询条件.

下面开始尝试存储过程的调用:

===============================================================================

CALL findbyname('028534fd70fa3bbd20f99850db909566');

CALL 关键字 存储过程的调用

18668ea12bf2

image.png

SET @na = '2' ; 设置入参为'2'

SELECT @na; 查询现在入参的值na

18668ea12bf2

image.png

CALL findbyname(@na); 根据当前入参查询结果

18668ea12bf2

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值