wuyulin0903 2016-08-19 08:58 采纳率: 0%
浏览 2342

关于mysql存储过程游标只循环一次

DELIMITER $$

CREATE PROCEDURE comment_count_sp ()
BEGIN
-- 需要定义接收游标数据的变量
DECLARE news_id_bak INT(11);
DECLARE news_count INT(11);
DECLARE count_all INT(11) DEFAULT 0;
-- 遍历数据结束标志
DECLARE done INT DEFAULT FALSE;
-- 游标
DECLARE cur CURSOR FOR (
SELECT news_info_id news_id_bak,COUNT(news_info_id) news_count FROM t_news_comment WHERE STATUS = 1 GROUP BY news_id_bak ORDER BY news_count ASC );

-- 将结束标志绑定到游标
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET done = FALSE;
-- 打开游标
OPEN cur;

-- 开始循环
read_loop: LOOP

FETCH cur INTO news_id_bak,news_count;

IF done THEN
  LEAVE read_loop;
END IF;

SET count_all = count_all + 1;

END LOOP;
SELECT count_all;
-- 关闭游标
CLOSE cur;

END

这个存储过程为什么count_all总是1,快崩溃了

  • 写回答

1条回答 默认 最新

  • yicp123 2016-08-19 09:54
    关注

    IF done THEN
    LEAVE read_loop;
    END IF;
    SET count_all = count_all + 1;

    这个里面什么也没有做啊,怎么记录数加1呢,而且,你定义的游标也根本没有用上
    IF DONE=0 THEN
    ACTION/*--你要做的动作*/
    SET count_all = count_all + 1;
    END IF;
    UNTIL DONE

    参考自:
    MySQL游标循环遍历的使用 http://www.data.5helpyou.com/article285.html

    评论

报告相同问题?

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。