声明游标时候有这么一条语句: DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 它是对全局的select有效的,只要有一条select语句返回空,那么就是触发该语句,从而导致游标提前退出。 问题解决办法: 在判断查询结果为null后,set done=0即可 这问题我排了快一天真是泪崩,主要还是mysql基础的薄弱导致的