1
resposta

Compartinhando minha solução

Segue minha solução, um pouco diferente da solução do professor, usando case:

CREATE OR REPLACE FUNCTION RETORNA_IMPOSTO
(p_COD IN PRODUTO_VENDA_EXERCICIO.COD_PRODUTO%TYPE)

RETURN PRODUTO_VENDA_EXERCICIO.PERCENTUAL_IMPOSTO%type

IS
    v_IMPOSTO PRODUTO_VENDA_EXERCICIO.PERCENTUAL_IMPOSTO%type;
    v_CATEGORIA PRODUTO_EXERCICIO.CATEGORIA%type;

BEGIN
    v_CATEGORIA := RETORNA_CATEGORIA(p_COD);
    
    CASE TRIM(v_CATEGORIA)
      WHEN  'Sucos de Frutas'   THEN    v_IMPOSTO := 10;
      WHEN 'Águas'              THEN    v_IMPOSTO := 20;
      WHEN 'Mate'               THEN    v_IMPOSTO := 15;
      ELSE v_IMPOSTO := 0;
    END CASE;
    
    RETURN  v_IMPOSTO;     

END;

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá! Como vai?

Mandou muito bem na resolução da atividade!

Observei que você explorou o uso de funções PL/SQL para modularizar a lógica, utilizou muito bem o comando CASE para tratar múltiplas condições de forma clara e ainda compreendeu a importância do retorno tipado para garantir consistência e segurança de tipos no banco de dados.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!