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

关于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

    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办