首页  >  文章  >  数据库  >  如何解决 MySQL 存储过程中的“错误 1329:未获取、选择或处理数据”?

如何解决 MySQL 存储过程中的“错误 1329:未获取、选择或处理数据”?

Susan Sarandon
Susan Sarandon原创
2024-10-25 19:11:02160浏览

How to Resolve

如何消除“错误 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn