Cara Menghapuskan "Ralat 1329: Tiada Data Diambil, Dipilih atau Diproses"
Apabila melaksanakan prosedur tersimpan yang tidak mengembalikan nilai, pengguna mungkin menghadapi "Ralat 1329: Tiada data - sifar baris diambil, dipilih atau diproses." Untuk menangani isu ini, ikut langkah berikut:
Pertimbangkan prosedur tersimpan berikut:
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
Ralat berpunca daripada tingkah laku MySQL yang memaparkan amaran walaupun ia telah dikendalikan. Untuk mengelakkan ini, masukkan baris berikut pada penghujung prosedur:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Sebagai alternatif, tambahkan pernyataan "dummy" yang melibatkan jadual dan laksanakan dengan jayanya selepas gelung, contohnya:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Ini akan mengosongkan amaran disebabkan oleh pepijat/kelakuan aneh dalam MySQL (dirujuk dalam http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html).
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan \'Ralat 1329: Tiada Data Diambil, Dipilih atau Diproses\' dalam Prosedur Tersimpan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!