存储过程双层循环_mysql嵌套存储过程实现循环嵌套

下面是工作中使用到的一个mysql嵌套循环存储过程,因为写的比较少,开始写花费了一点时间,特此记录一下

DELIMITER //

CREATE PROCEDURE handleHisNewCommentData()

BEGIN

DECLARE done INT DEFAULT FALSE;

DECLARE topId INT;

DECLARE topComments_cur CURSOR FOR SELECT ID

FROM

T_COMMENT

WHERE REPLY_ID = 0;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN topComments_cur;

data_loop: LOOP

-- 取值 取多个字段

FETCH topComments_cur

INTO topId;

IF done

THEN

LEAVE data_loop;

END IF;

CALL updateCommentRootId(topId, topId);

SELECT topId;

END LOOP;

CLOSE topComments_cur;

END//

CREATE PROCEDURE updateCommentRootId(replyId INT, rootId INT)

BEGIN

DECLARE done INT DEFAULT FALSE;

DECLARE commentId INT;

DECLARE comments_cur CURSOR FOR SELECT ID

FROM

T_COMMENT

WHERE REPLY_ID = replyId;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN comments_cur;

data_loop: LOOP

-- 取值 取多个字段

FETCH comments_cur

INTO commentId;

IF done

THEN

LEAVE data_loop;

END IF;

UPDATE T_NEW_COMMENT

SET ROOT_ID = rootId

WHERE id = commentId;

CALL updateCommentRootId(commentId, rootId);

END LOOP;

CLOSE comments_cur;

END//

DELIMITER ;

CALL handleHisNewCommentData;

DROP PROCEDURE handleHisNewCommentData;

DROP PROCEDURE updateCommentRootId;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值