Cómo eliminar el "Error 1329: no se obtuvieron, seleccionaron ni procesaron datos"
Al ejecutar procedimientos almacenados que no devuelven valores, los usuarios pueden encontrar el "Error 1329: No hay datos: cero filas recuperadas, seleccionadas o procesadas". Para solucionar este problema, siga estos pasos:
Considere el siguiente procedimiento almacenado:
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
El error se debe al comportamiento de MySQL de mostrar una advertencia incluso cuando se ha manejado. Para evitar esto, incluya la siguiente línea al final del procedimiento:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Como alternativa, agregue una declaración "ficticia" que involucre una tabla y se ejecuta correctamente después del bucle, por ejemplo:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Esto borrará la advertencia debido a un error/comportamiento extraño en MySQL (al que se hace referencia en http://dev.mysql.com/doc/refman/5.5/en/show-warnings.html).
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3