有两个数据库表,社团表和一个社团分类表,后来突然想加个 各个社团种类下的社团数 这样一个字段count,于是用到了存储过程
navicat中编写存储过程可以直接点上方的函数然后选择存储过程
1 CREATE DEFINER=`root`@`localhost` PROCEDURE `countcate`() 2 BEGIN 3 -- 定义需要接收游标数据的变量 4 DECLARE cateid INT(10); 5 -- 定义结束标志 6 DECLARE done INT(1) DEFAULT 0; 7 -- 定义游标 8 DECLARE cur CURSOR FOR SELECT society_cate.id from society_cate; 9 -- 将结束标志绑定到游标 10 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 11 -- 开启游标 12 OPEN cur; 13 -- 开始循环 14 loop_label: LOOP 15 -- 提取游标的数据 16 FETCH cur INTO cateid; 17 -- if判断何时结束循环 18 IF done = 1 THEN 19 LEAVE loop_label; 20 END IF; 21 22 -- 操作sql语句 23 UPDATE society_cate sc SET sc.count = (SELECT count(1) from society WHERE society.society_cate = cateid) WHERE sc.id = cateid; 24 25 END LOOP loop_label; 26 27 END
学习博客:
https://www.runoob.com/w3cnote/mysql-stored-procedure.html
https://blog.51cto.com/13568014/2117678