如何消除「錯誤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中文網其他相關文章!