Usando FORALL

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
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Pessoal, alguém aí tem um exemplo simples de como usar o FORALL para ler uma tabela, verificar se existe na outra, se existir update senao insert.

Ler tab1
verifica se existe registro na tab2
se existe: update na tab2
senao existe: insert na tab2

isso tudo usando FORALL.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Cleberz,

Tudo bem?

Acho que você consegue fazer o comando FORALL + MERGE, como no exemplo abaixo, obtido no OTN FORUM (https://forums.oracle.com/forums/thread ... ID=1066610):

Selecionar tudo

FORALL i IN emp_rec.first..emp_rec.last
MERGE INTO emp t
USING dual
ON ( t.emp_id = emp_rec(i).emp_id 
 AND t.emp_dept = emp_rec(i).emp_dept )
WHEN MATCHED THEN
 UPDATE SET
 t.col1 = emp_rec(i).col1,
 t.col2= emp_rec(i).col2,
 ...
WHEN NOT MATCHED THEN
 INSERT (col1, col2, col3, ...)
 VALUES (emp_rec(i).col1, emp_rec(i).col2, emp_rec(i).col3, ...)
;

Eu não pesquisei a fundo o tema, mas parece que isso só funcionaria no 11G em diante.

Você pode obter um outro exemplo neste link: http://itknowledgeexchange.techtarget.c ... llections/

Talvez os foristas possam dar outras sugestões.

Abraços e boa sorte !

Sergio Coutinho
cleberz
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 107
Registrado em: Ter, 15 Nov 2011 8:42 am

Obrigado Sergio, vou fazer uns testes aqui, tomara que funcione.

Obrigado!
Responder
  • Informação
  • Quem está online

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