2
respostas

Resolução do exercício - inclusão de venda via procedure

Boa tarde!

CREATE OR REPLACE PROCEDURE incluindo_dados_venda (
    p_ID PRODUTO_VENDA_EXERCICIO.ID%TYPE,
    P_COD_PRODUTO PRODUTO_VENDA_EXERCICIO.COD_PRODUTO%TYPE,
    P_DATA PRODUTO_VENDA_EXERCICIO.DATA%TYPE,
    p_QUANTIDADE PRODUTO_VENDA_EXERCICIO.QUANTIDADE%TYPE,
    p_PRECO PRODUTO_VENDA_EXERCICIO.PRECO%TYPE,
    p_PERCENT_IMPOSTO PRODUTO_VENDA_EXERCICIO.PERCENTUAL_IMPOSTO%TYPE
)

IS
v_VALOR_TOTAL PRODUTO_VENDA_EXERCICIO.VALOR_TOTAL%TYPE;

BEGIN
    v_VALOR_TOTAL := p_QUANTIDADE * p_PRECO;
    INSERT INTO PRODUTO_VENDA_EXERCICIO VALUES (p_ID, p_COD_PRODUTO, p_DATA, p_QUANTIDADE, p_PRECO, v_VALOR_TOTAL, p_PERCENT_IMPOSTO);
    COMMIT;
END;

EXECUTE incluindo_dados_venda(1, 41232, TO_DATE('2022-01-01', 'YYYY-MM-DD'), 100, 10, 10);
2 respostas

Oi! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Sua solução está bem estruturada ao criar uma procedure para inserir os dados de venda e calcular o VALOR_TOTAL antes do INSERT. Esse tipo de organização é muito útil em PL/SQL, pois centraliza a lógica de negócio no banco de dados e facilita reutilizar o mesmo processo sempre que uma nova venda precisar ser registrada.

Uma dica interessante para o futuro é utilizar DBMS_OUTPUT.PUT_LINE para exibir mensagens durante a execução da procedure, o que ajuda bastante em testes e depuração.


DECLARE
  v_total NUMBER;
BEGIN
  v_total := 10 * 5;
  DBMS_OUTPUT.PUT_LINE('valor total: ' || v_total);
END;

Esse código calcula um valor e usa DBMS_OUTPUT.PUT_LINE para mostrar o resultado no console, ajudando a acompanhar o que está acontecendo durante a execução do bloco PL/SQL.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Para saber mais:

Sugestão de conteúdo:

DOCUMENTAÇÃO
DBMS_OUTPUT
Alura

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

Olá, Monalisa!

Muito obrigado por compartilhar a dica do DBMS_OUTPUT.PUT_LINE.