Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

CODIGO INCORRECTO

LUEGO DE EJECUTAR EL CÓDIGO DEL PROFESOR, ME ARROJA NULL PARA CUALQUIER CASO VÁLIDO, ES POR ESO QUE SUGIERO EL SIGUIENTE CÓDIGO:

CREATE DEFINER=root@localhost PROCEDURE define_sabor_con_error(vcodigo VARCHAR(20))
BEGIN
DECLARE mensaje_error VARCHAR(40) DEFAULT '';
DECLARE vsabor VARCHAR(20);
DECLARE CONTINUE HANDLER FOR 1339
SET mensaje_error = 'Sabor no definido en ningún caso';
SELECT SABOR INTO vsabor FROM tabla_de_productos
WHERE CODIGO_DEL_PRODUCTO=vcodigo;
CASE vsabor
WHEN 'Maracuya' THEN select 'Muy Rico';
WHEN 'Limon' THEN SELECT 'Muy Rico';
WHEN 'Frutilla' THEN SELECT 'Muy Rico';
WHEN 'Uva' THEN SELECT 'Muy Rico';
WHEN 'Sandia' THEN SELECT 'Normal';
WHEN 'Mango' THEN SELECT 'Normal';
END CASE;
IF mensaje_error <> '' THEN
SELECT mensaje_error AS Mensaje;
END IF;

1 respuesta

Hola, justo estaba probando lo mismo.

Creo que debería definir un bloque propio para tratar el error. Como está el código original, mostraba el error siempre.
Modifiqué el procedure del profe para probar sin hacer las consultas internas y funciona.

Si alguien, la tiene más clara, podría indicar si era eso lo que faltaba? agregar un bloque propio para el error?

CREATE DEFINER=root@localhost PROCEDURE procedure_error(vsabor VARCHAR(20))
BEGIN
DECLARE mensajeerror VARCHAR(50);

DECLARE CONTINUE HANDLER FOR 1339
begin
SET mensajeerror = 'Sabor no definido en ningún caso.';
SELECT mensajeerror;
end;

CASE vsabor
WHEN 'Maracuyá' THEN SELECT 'Muy Rico';
WHEN 'Limón' THEN SELECT 'Muy Rico';
WHEN 'Frutilla' THEN SELECT 'Muy Rico';
WHEN 'Uva' THEN SELECT 'Muy Rico';
WHEN 'Sandía' THEN SELECT 'Normal';
WHEN 'Mango' THEN SELECT 'Normal';
END CASE;

END