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;