如何消除「錯誤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