1
resposta

Treinamento PL - Mão na massa - não salva o segundo log

Oi!

Fiz o treinamento "PostgreSQL: desenvolva com PL/pgSQL" e tive um erro no exercício da última aula.

Exercício:

/**

  • Inserir instrutores (com salários).
  • Se o salário for maior do que a média, salvar um log.
  • Salvar outro log dizendo que fulano recebe mais do que X% da grade de instrutores. */

Depois de criar a tabela de logs fiz a seguinte função:

create or replace function cria_instrutor(nome_instrutor varchar, salario_instrutor decimal) returns void as $$
    declare 
        id_instrutor_inserido integer;
        media_salarial decimal;
        instrutores_recebem_menos integer;
        total_instrutores integer;
        salario decimal;
        percentual decimal; 
    begin 
        insert into instrutor (nome, salario) values (nome_instrutor, salario_instrutor) returning id into id_instrutor_inserido;    

        select avg(instrutor.salario) into media_salarial from instrutor where id <> id_instrutor_inserido;    
        if salario_instrutor > merdia_salarial then
            insert into log_instrutores (informacao) values (nome_instrutor || ' recebe acima da média');    
        end if;

        for salario in select instrutor.salario from instrutor where id <> id_instrutor_inserido loop 
            total_instrutores := total_instrutores + 1;
            if salario_instrutor > salario then
                instrutores_recebem_menos := instrutores_recebem_menos + 1;
            end if;    
        end loop;    

        percentual = instrutores_recebem_menos::decimal / total_instrutores::decimal * 100;

        insert into log_instrutores (informacao) 
            values (nome_instrutor || ' recebe mais do que ' || percentual || '% da grade de instrutores');

    end;
$$ language plpgsql;

Aí executei e verifiquei os resultados:

select cria_instrutor ('Fulana de tal', 1000);
select * from instrutor i ;
select * from log_instrutores ;

Me parece que ficou igual a do professor, mas não insere o segundo log, os resultados ficaram assim:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguém sabe me dizer no que eu errei?

1 resposta

Olá, acredito que esteja faltando condição else nos if's...