儲存過程中無資料警告:「錯誤1329:取得、選擇或處理零行」
在資料庫程式設計中,儲存過程通常用於封裝複雜的操作並確保資料完整性。然而,有時這些過程可能會遇到錯誤或產生意外的警告。一個常見問題是「錯誤 1329:無資料 - 提取、選擇或處理零行」訊息。
當預存程序未明確處理沒有傳回資料的情況時,通常會出現此警告。為了解決這個問題,必須正確處理「NOT FOUND」情況。在 MySQL 中,這可以使用 CONTINUE HANDLER 語句來實現。
考慮以下testing_proc預存程序:
<code class="sql">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</code>
如果此程序在 customer_tbl 表中沒有任何資料的情況下運行,它將觸發「錯誤 1329」警告。為了防止這種情況,我們可以將以下 CONTINUE HANDLER 語句告訴 MySQL 如果沒有找到行,則將 did 變數設為 1。這將導致遊標循環退出,從而防止錯誤發生。
<code class="sql">DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
此語句將確保提取一行,從而清除警告。
<code class="sql">SELECT name INTO l_name FROM customer_tbl LIMIT 1;</code>
以上是如何處理 MySQL 預存程序中的「錯誤 1329:無資料 - 取得零行」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!