Как устранить «Ошибку 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