No hay advertencia de datos en los procedimientos almacenados: "Error 1329: cero filas obtenidas, seleccionadas o procesadas"
En la programación de bases de datos, procedimientos almacenados Se utilizan a menudo para encapsular operaciones complejas y garantizar la integridad de los datos. Sin embargo, a veces estos procedimientos pueden encontrar errores o generar advertencias inesperadas. Un problema común es el mensaje "Error 1329: No hay datos: cero filas recuperadas, seleccionadas o procesadas".
Esta advertencia suele aparecer cuando un procedimiento almacenado no maneja explícitamente el caso en el que no se devuelven datos. Para resolver esto, se debe manejar adecuadamente la condición "NO ENCONTRADO". En MySQL, esto se puede lograr usando una instrucción CONTINUE HANDLER.
Considere el siguiente procedimiento almacenado testing_proc:
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
Si este procedimiento se ejecuta sin ningún dato en la tabla customer_tbl, activará la advertencia "Error 1329". Para evitar esto, podemos agregar la siguiente declaración CONTINUE HANDLER al final del procedimiento:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Esta declaración le dice a MySQL que establezca la variable hecho en 1 si no se encuentran filas. Esto hará que el bucle del cursor salga, evitando que ocurra el error.
Como alternativa, también se puede omitir la advertencia agregando una declaración "ficticia" al final del procedimiento que involucra una tabla y es exitosa. tales como:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Esta declaración garantizará que se obtenga una fila, eliminando la advertencia.
Manejando adecuadamente la condición "NO ENCONTRADO" o agregando una declaración ficticia, se puede eliminar la advertencia "Error 1329" en los procedimientos almacenados que no devuelven ningún dato.
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