我们在实际的开发中,会遇到一些统计的业务功能,如果我实时的去查询的话有时候会很慢,此时我们可以写一个存储过程来实现,具体操作如下,先创建一个存储过程
输入存储过程名称
2 开始写存储过程,具体如下,仅供参考
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
-- 下面这一行不用修改,创建存储过程时会自动生成,从begin下面写自己的逻辑
PROCEDURE `bwc`.`test3`()
BEGIN
-- 声明变量(根据自己的需求去修改),varchar 类型要指定长度
DECLARE merchantName VARCHAR(255); #写自己的注释
-- 这一行一定要上面的可以根据自己的逻辑写多少都行
DECLARE done INT DEFAULT 0;
-- 创建游标
DECLARE cur CURSOR FOR
-- 开始执行查询语句并把查询出的值赋值给变量,类型与下面这种,记着一定要以 ";"结尾。
SELECT
m.name AS merchantName,m.id AS merchantId;
-- 游标执行完,即遍历结束。设置done的值为1
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
-- 开启游标
OPEN cur;
-- 执行循环
posLoop:LOOP
FETCH cur INTO merchantName; #要和声明的变量对应上不能少写,done除外
-- 如果done的值为1,即遍历结束,结束循环
IF done=1 THEN
LEAVE posLoop;
-- 注意,if语句需要添加END IF结束IF
END IF;
-- 执行插入语句
INSERT INTO `表名称`(
-- 字段名称
)
VALUES
(
-- 字段的值
);
-- 关闭循环
END LOOP posLoop;
-- 关闭游标
CLOSE cur;
END$$
DELIMITER ;
编写之后,执行,如下图所示表示执行成功,如果出现错误,请根据实际错误情况修改
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210422172236605.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODI5MjM3,size_16,color_FFFFFF,t_70)
然后调用存储过程 call '存储过程名称'