Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

MINHA RESOLUCAO

Bom dia a todos,

Gostei bastante desse exercicio, ele me fez utilizar várias coisas que aprendi ao decorrer do curso e agora no trabalho e abriu minha mente, as pesquisas após a montagem do exercicio foram pra corrigir alguns erros que não estavam de acordo com o que eu queria e aprendi e compreendi tudo que fiz. Estou feliz com a minha evolução desde o primeiro curso, quero evoluir cada vez mais.

Segue minha lógica. Consegui atualizar todos os valores automaticamente, além dos impostos, inclusive corrigindo o imposto que estava 100% anteriormente.


CREATE OR REPLACE PROCEDURE ATRIBUIR_VALOR_TOTAL_E_PERCENTUAL_IMPOSTO 
IS
    v_CONTADOR PRODUTO_VENDA_EXERCICIO.ID%type;
    v_QUANTIDADE PRODUTO_VENDA_EXERCICIO.QUANTIDADE%type;
    v_CODIGO PRODUTO_VENDA_EXERCICIO.COD_PRODUTO%type;
    v_PRECO PRODUTO_VENDA_EXERCICIO.PRECO%type;
    v_CATEGORIA PRODUTO_EXERCICIO.CATEGORIA%type;
    v_VALOR_TOTAL PRODUTO_VENDA_EXERCICIO.VALOR_TOTAL%type;
    v_PERCENTUAL_IMPOSTO NUMBER;
    v_MAX_ID NUMBER;
BEGIN  
    v_CONTADOR := 1;
    SELECT MAX(ID) INTO v_MAX_ID FROM PRODUTO_VENDA_EXERCICIO;
LOOP
    SELECT PV.QUANTIDADE, PV.PRECO, PV.COD_PRODUTO, PE.CATEGORIA
    INTO v_QUANTIDADE, v_PRECO, v_CODIGO, v_CATEGORIA
    FROM PRODUTO_VENDA_EXERCICIO PV, PRODUTO_EXERCICIO PE
    WHERE PV.COD_PRODUTO = PE.COD
    AND PV.ID = v_CONTADOR;
    
    v_VALOR_TOTAL := v_QUANTIDADE * v_PRECO;
    v_PERCENTUAL_IMPOSTO := RETORNA_IMPOSTO(v_CODIGO);
    
    UPDATE PRODUTO_VENDA_EXERCICIO SET VALOR_TOTAL = v_VALOR_TOTAL, PERCENTUAL_IMPOSTO = v_PERCENTUAL_IMPOSTO WHERE ID = v_CONTADOR;
    
    v_CONTADOR := v_CONTADOR + 1;
EXIT WHEN v_CONTADOR > v_MAX_ID;
END LOOP;
COMMIT;
END ATRIBUIR_VALOR_TOTAL_E_PERCENTUAL_IMPOSTO;
EXECUTE ATRIBUIR_VALOR_TOTAL_E_PERCENTUAL_IMPOSTO;
SELECT * FROM PRODUTO_VENDA_EXERCICIO;

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