首頁  >  文章  >  資料庫  >  如何解決 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