如何消除“错误 1329:未获取、选择或处理数据”
执行不返回值的存储过程时,用户可能会遇到“错误 1329:无数据 - 提取、选择或处理零行”。要解决此问题,请按照下列步骤操作:
考虑以下存储过程:
CREATE PROCEDURE `testing_proc`() READS SQL DATA BEGIN DECLARE done INT DEFAULT 0; DECLARE l_name VARCHAR(20); DECLARE my_cur CURSOR FOR SELECT name FROM customer_tbl; OPEN my_cur; my_cur_loop: LOOP FETCH my_cur INTO l_name; IF done = 1 THEN LEAVE my_cur_loop; END IF; INSERT INTO names_tbl VALUES(l_name); END LOOP my_cur_loop; CLOSE my_cur; END
该错误源于 MySQL 的行为,即使该警告已被处理,也会显示警告。为了防止这种情况,请在过程末尾添加以下行:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
或者,添加涉及表的“虚拟”语句并在循环后成功执行,例如:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
这将清除由于 MySQL 中的错误/奇怪行为而产生的警告(在 http: //dev.mysql.com/doc/refman/5.5/en/show-warnings.html).
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3