1
I created an SQL function to calculate the user’s daily calories by multiplying their baseline metabolic rate by the level of physical activity. Workbench shows no error when implementing my function, but when I run it returns NULL
.
The data entered in the database are:
Table proc_dieta
:
met_basal |
---|
1872 |
Table usuario
:
sex | atv_fisica |
---|---|
Masculine | Low |
Follows, below, the function created:
CREATE DEFINER=`root`@`localhost` FUNCTION `funcao_jovem`(id INT)
RETURNS decimal(10,2)
BEGIN
DECLARE fator_atividade DECIMAL(10,2);
DECLARE calorias_diarias DECIMAL(10,2);
DECLARE sexo VARCHAR(15);
DECLARE atv_fisica VARCHAR(20);
DECLARE met_basal INT;
SELECT met_basal, atv_fisica, sexo INTO met_basal, atv_fisica, sexo
FROM usuario, proc_dieta
WHERE proc_dieta.cod_cad = usuario.cod_cad
AND usuario.cod_cad = id;
IF (sexo = 'Masculino') THEN
IF (atv_fisica = 'Baixa') THEN SET fator_atividade = 1.60;
ELSEIF (atv_fisica = 'Alta') THEN SET fator_atividade = 6.00;
ELSE SET fator_atividade = 2.5; END IF;
ELSE
IF (atv_fisica = 'Baixa') THEN SET fator_atividade = 1.50;
ELSEIF (atv_fisica = 'Alta') THEN SET fator_atividade = 6.00;
ELSE SET fator_atividade = 2.2; END IF;
END IF;
SET calorias_diarias = met_basal * fator_atividade;
RETURN calorias_diarias;
END
It seems that the problem is in SELECT.
– Rodrigo Zem
sex INTO met_basal, that’s right?
– Marcos Vinicius Leão
Yes, because the data in INTO follow the same sequence as in SELECT " met_basal, atv_fisica, sex INTO met_basal, atv_fisica, sex "
– Guilherme Otto