Update com Procedure.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
networklucas
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 24 Fev 2017 10:08 am

Caros

Estou com o seguinte problema.

Tenho uma tabela

Selecionar tudo

VENDAS
(DATA_VENDA,NUM_IP,QTD_VENDA,VAL_PU_VENDA,COMPRADOR,VENDEDOR,NUM_ID_VENDA)
E outra tabela

Selecionar tudo

OPERACAO
(DATA_OPERACAO NUM_IP,QTD_OPERACAO,VAL_preço_UNITARIO,NUM_P1,NUM_P2, NUM_VENDA)
Preciso montar uma procedure que faça a conciliação dessas tabelas. ou seja.. vai comparar os dados de cada campo das tabelas se eles forem iguais deve ocorrer um update que coloque o valor do campo NUM_ID_VENDA da tabela VENDA no campo NUM_VENDA da tabela OPERACAO.

Ex.. QTS_VENDA deve ser igual do QTD_OPERACAO, VAL_PU_VENDA deve ser igual ao VAL_preço_UNITARIO . assim por diante . E se os campos foram iguais ocorre o UPDATE.

E também a procedure deve gerar um arquivo de log informando o valor de cada campo que foi utilizado para a conciliação. alguém sabe como montar? essa procedure vai ser chamada por um job
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá networklucas,

Tudo bem?

Acho que tem varias formas de você fazer esta atividade.

Entendo que as comparações que você precise fazer são estas:

VENDA.DATA_VENDA <==> OPERACAO.DATA_OPERACAO
VENDA.NUM_IP <==>OPERACAO.NUM_IP
VENDA.QTD_VENDA <==> OPERACAO.QTD_OPERACAO
VENDA.VAL_PU_VENDA <==> OPERACAO.VAL_preço_UNITARIO
VENDA.COMPRADOR <==> OPERACAO.NUM_P1
VENDA.VENDEDOR <==> OPERACAO.NUM_P2

Você conseguia resolver isso através de um comando de MERGE, com a opção de WHEN MATCH.

Maiores informações sobre o funcionamento deste comando neste link: https://oracle-base.com/articles/10g/me ... ements-10g

Boa sorte,

Sergio Coutinho
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes