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

[Queja] WARNING

Al ejecutar el siguiente script:

SET GLOBAL log_bin_trust_function_creators = 1;

me sale una advertencia y no me deja crear funciones

SET GLOBAL log_bin_trust_function_creators = 1	0 row(s) affected, 1 warning(s):
 1287 '@@log_bin_trust_function_creators' is deprecated and will be removed in a future release.	0.000 sec

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Al crear la funcion

CREATE FUNCTION `f_define_sabor` (vsabor VARCHAR(40))
    RETURNS VARCHAR(40)
BEGIN
    DECLARE vretorno VARCHAR(40) DEFAULT '';
    CASE vsabor 
    WHEN 'Maracuyá' THEN SET vretorno = 'Muy rico!';
    WHEN 'Limón' THEN SET vretorno = 'Muy Rico';
    WHEN 'Frutilla' THEN SET vretorno = 'Muy rico!';
    WHEN 'Uva' THEN SET vretorno = 'Muy Rico';
    WHEN 'Sandía' THEN SET vretorno = 'Normal!';
    WHEN 'Mango' THEN SET vretorno = 'Normal';
    ELSE SELECT 'Jugos Normales';
    END CASE;
    RETURN vretorno;
END

ME SALE ERROR: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Jorge,

Por lo que veo, estás intentando crear una función en MySQL y te encuentras con un par de problemas.

Primero, estás usando el comando SET GLOBAL log_bin_trust_function_creators = 1; y recibes una advertencia de que esta opción está obsoleta y será eliminada en futuras versiones de MySQL. No te preocupes, esta advertencia no debería impedir que crees funciones. Sin embargo, es importante tener en cuenta que en futuras versiones de MySQL, es posible que necesites encontrar una alternativa a este comando.

En cuanto al error al crear la función, parece que el problema está en la cláusula ELSE de tu declaración CASE. En tu código, estás usando SELECT 'Jugos Normales';, pero en una función, deberías usar SET vretorno = 'Jugos Normales';, al igual que en las otras ramas de tu declaración CASE. Aquí te dejo cómo quedaría:

CREATE FUNCTION `f_define_sabor` (vsabor VARCHAR(40))
    RETURNS VARCHAR(40)
BEGIN
    DECLARE vretorno VARCHAR(40) DEFAULT '';
    CASE vsabor 
        WHEN 'Maracuyá' THEN SET vretorno = 'Muy rico!';
        WHEN 'Limón' THEN SET vretorno = 'Muy Rico';
        WHEN 'Frutilla' THEN SET vretorno = 'Muy rico!';
        WHEN 'Uva' THEN SET vretorno = 'Muy Rico';
        WHEN 'Sandía' THEN SET vretorno = 'Normal!';
        WHEN 'Mango' THEN SET vretorno = 'Normal';
        ELSE SET vretorno = 'Jugos Normales';
    END CASE;
    RETURN vretorno;
END

Espero que esto resuelva tus problemas. Recuerda, el código SQL puede ser un poco complicado al principio, pero con práctica, te familiarizarás con él.

Espero haber ayudado y ¡buenos estudios!