」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何解決 MySQL 預存程序中的「錯誤 1329:未取得、選擇或處理資料」?

如何解決 MySQL 預存程序中的「錯誤 1329:未取得、選擇或處理資料」?

發佈於2024-11-04
瀏覽:590

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