1
resposta

erro na criação de uma function

Preciso criar esta função para utilizar numa procedure, mas não estou conseguindo, alguém pode ajudar? ** ESTA VARIAVELL TOTAL EU CRIEI NA FUNCTION**

CREATE DEFINER=`root`@`localhost` FUNCTION `causas_calculo`() RETURNS varchar(50) CHARSET utf8mb4
BEGIN
DECLARE ENGAJAMENTO VARCHAR (20);
DECLARE FOME VARCHAR (10);
DECLARE AMAZONIA VARCHAR (10);
DECLARE SECA VARCHAR (10);
DECLARE TOTAL VARCHAR (100);
SET TOTAL = (ENGAJAMENTO, FOME, AMAZONIA, SECA);
SELECT COUNT(*) INTO TOTAL FROM CAUSAS;
RETURN TOTAL ;
END
1 resposta

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!