今天在写存储过程,给其他表插入数据时,发现,我游标取出来的数据明明只有一条,但是在循环过程中,却发现插入了两条数据。下面是代码
BEGIN
#Routine body goes here...
DECLARE event_content1 VARCHAR(255);
DECLARE event_id1 INT;
DECLARE event_name VARCHAR(255);
DECLARE start_time1 TIMESTAMP;
DECLARE end_time1 TIMESTAMP;
DECLARE result_counts1 INT;
DECLARE High_result_time1 TIMESTAMP;
DECLARE high_result_counts1 INT;
DECLARE start_result_time1 TIMESTAMP;
DECLARE start_result_name1 text;
DECLARE reposts_counts1 INT;
DECLARE comments_counts1 INT;
DECLARE attitude_counts1 INT;
DECLARE done INT DEFAULT FALSE;
DECLARE cur cursor for SELECT id,event_content,create_time,finish_time FROM t_public_concern_event WHERE `status` = 1 ;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
TRUNCATE TABLE event_preview;
read_loop:LOOP
if done THEN
LEAVE read_loop;
END IF;
# 游标 获取事件列表
FETCH cur INTO event_id1,event_content1,start_time1,end_time1;

本文探讨了一次在使用MySQL存储过程时遇到的问题,即在游标循环中,原本应只插入一条数据的操作错误地插入了多条。问题源于Fetch游标的位置不正确,解决方案是在判断游标是否为空的IF语句之前进行Fetch操作,修正后问题得到解决。
最低0.47元/天 解锁文章
1万+





