如何消除“错误 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 中引用)。
以上是如何解决 MySQL 存储过程中的'错误 1329:未获取、选择或处理数据”?的详细内容。更多信息请关注PHP中文网其他相关文章!