Oi, Suellen! Tudo certo?
Desde já, peço desculpas por demorar a te responder.
Ao tentar criar a sua função, recebi como resposta o erro 1418. Caso esse tenha sido o problema que te impediu de finalizar a atividade, podemos contorná-lo adicionando as seguintes cláusulas no início da criação da função: DETERMINISTIC
e READS SQL DATA
, desta forma:
CREATE DEFINER=`root`@`localhost` FUNCTION `causas_calculo`() RETURNS varchar(50) CHARSET utf8mb4
READS SQL DATA
DETERMINISTIC
BEGIN
DECLARE ENGAJAMENTO VARCHAR (200);
DECLARE FOME VARCHAR (100);
DECLARE AMAZONIA VARCHAR (100);
DECLARE SECA VARCHAR (100);
DECLARE TOTAL VARCHAR (100);
SET ENGAJAMENTO = 'valor_engajamento';
SET FOME = 'valor_fome';
SET AMAZONIA = 'valor_amazonia';
SET SECA = 'valor_seca';
SET TOTAL = CONCAT(ENGAJAMENTO, FOME, AMAZONIA, SECA);
SELECT COUNT(*) INTO TOTAL FROM CAUSAS;
RETURN TOTAL;
END
O erro 1418 geralmente acontece quando não identificamos a natureza da função que está sendo criada, esta é uma forma de manter a integridade e a segurança das nossas informações e das estruturas que compõem o banco de dados. Ao adicionar READS SQL DATA
e DETERMINIST
, dizemos, respectivamente, que a função causas_calculo()
realizará operações de leitura e sempre terá o mesmo comportamento — ou seja, acabamos de definir a natureza da função!
Feito isso, já podemos confirmar a criação e chamar a função, assim:
SELECT causas_calculo();
Suellen, espero ter ajudado! Caso este não seja o problema que lhe apareceu, peço que observe o erro retornado e o compartilhe com o fórum. Desta maneira, conseguimos analisar de forma mais direcionada e assertiva o que está impedindo a criação da função causas_calculo()
.
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!