”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何解决 MySQL 存储过程中的“错误 1329:未获取、选择或处理数据”?

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

发布于2024-11-04
浏览:891

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).

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3