1
resposta

Entendendo Função - ERROR 1415

Boa noite!

Espero que todos estejam bem.

Estou com uma dúvida em relação a criação da função apresentada no último vídeo da aula "Cursor e Função". Ao tentar seguir o passo-a-passo que o professor executa no vídeo, o Workbench me apresenta o seguinte erro:

ERROR 1415: Not allowed to return a result set from a function

E não cria a função. Como devo proceder para resolver esse erro e conseguir criar uma função?

Função criada na aula:

CREATE FUNCTION `f_acha_tipo_sabor` (vSabor VARCHAR(50))
RETURNS VARCHAR(20)
BEGIN
    DECLARE vRetorno VARCHAR(20) DEFAULT "";
    CASE vSabor
    WHEN 'Lima/Limão' THEN SET vRetorno = 'Cítrico';
    WHEN 'Laranja' THEN SET vRetorno = 'Cítrico';
    WHEN 'Morango/Limão' THEN SET vRetorno = 'Cítrico';
    WHEN 'Uva' THEN SET vRetorno = 'Neutro';
    WHEN 'Morango' THEN SET vRetorno = 'Neutro';
    ELSE SELECT 'Ácido';
END CASE;
RETURN vRetorno;
END
1 resposta

isso ocorre porque você está usando SELECTconsultas cuja saída não está armazenada em variáveis ou temporárias dentro FUNCTIONdas quais deve. A função pode retornar apenas um único valor. Então seu código deve ser algo assim:

CREATE FUNCTION gdn.f_acha_tipo_sabor(vSabor VARCHAR(50))
RETURNS VARCHAR(20)
begin
    DECLARE vRetorno VARCHAR(20) DEFAULT "";
    CASE vSabor
    WHEN 'Lima/Limão' THEN SET vRetorno = 'Cítrico';
    WHEN 'Laranja' THEN SET vRetorno = 'Cítrico';
    WHEN 'Morango/Limão' THEN SET vRetorno = 'Cítrico';
    WHEN 'Uva' THEN SET vRetorno = 'Neutro';
    WHEN 'Morango' THEN SET vRetorno = 'Neutro';
    else SET vRetorno = 'Ácido';
END CASE;
RETURN vRetorno;
END