Duvidas sobre Merge
-
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Ter, 11 Jan 2005 7:44 am
- Localização: Catanduva - SP
Bom dia alguém poderia me explicar com detalhes para que serve o comando merge , e me mandar um exemplo.obrigado.david
-
- Rank: Estagiário Pleno
- Mensagens: 7
- Registrado em: Ter, 11 Jan 2005 7:44 am
- Localização: Catanduva - SP
ENTÃO NÃO SEI EXPLICAR BEM , MAS PARECE QUE ELE FAZ UM INSERT JUNTO COM UM UPDATE, vocês TEM UM EXEMPLO.
MERGE INTO nome_da_tabela D
USING (select numero, str from teste) S
ON (S.numero = D.numero)
WHEN MATCHED THEN UPDATE SET D.nome_campo = S.str
WHEN NOT MATCHED THEN INSERT (D.nome_campo)
VALUES (S.str);
na clausula on coloca a condição para o insert ou update, no caso se o numero em S for igual ao de D o update é gerado, senao o insert.
está bem simples mas espero que te ajude...
Falows...
- fbifabio
- Moderador
- Mensagens: 199
- Registrado em: Ter, 22 Fev 2011 1:51 pm
- Localização: São Paulo - SP
- Contato:
Fábio Prado
www.fabioprado.net
www.fabioprado.net
david ribeiro guilherme,
O Merge é uma instrução SQL que foi inclusa no padrão Ansi SQL 2003 e que pode ser utilizada para efetuar INSERT ou UPDATE (um ou outro) e até mesmo para efetuar DELETE. Ele é ótimo para otimizar performance de cargas de dados onde você tem que verificar os dados da tabela destino para decidir se deve fazer INSERT ou UPDATE. O script que o Fabiano apresentou é um bom exemplo, porém se desejar aprender em mais detalhes essa técnica e muitas outras para tunar instruções SQL, sugiro o treinamento de SQL Tuning que irei ministrar dias 15, 22 e 29/09/2012. Mais informações: http://www.fabioprado.net/p/sql-tuning- ... racle.html
[]s
Fábio Prado
O Merge é uma instrução SQL que foi inclusa no padrão Ansi SQL 2003 e que pode ser utilizada para efetuar INSERT ou UPDATE (um ou outro) e até mesmo para efetuar DELETE. Ele é ótimo para otimizar performance de cargas de dados onde você tem que verificar os dados da tabela destino para decidir se deve fazer INSERT ou UPDATE. O script que o Fabiano apresentou é um bom exemplo, porém se desejar aprender em mais detalhes essa técnica e muitas outras para tunar instruções SQL, sugiro o treinamento de SQL Tuning que irei ministrar dias 15, 22 e 29/09/2012. Mais informações: http://www.fabioprado.net/p/sql-tuning- ... racle.html
[]s
Fábio Prado
Desculpem estar upando um tópico de 2005, mas como já o tinha sido feito um mês atrás acho que posso seguir no mesmo tópico.
Estou tentando utilizar o MERGE, porém dentro de uma trigger.
A diferença é que ao invés de utilizar INSERT e UPDATE estou tentando utilizar as variáveis :NEW e :OLD, porém me acusa um erro que falta palavra chave, ou algo assim.
É possível utilizar o merge para essa situação?
Segue código de exemplo abaixo:
Após o THEN da condição MATCHED, é sinalizado o seguinte erro:
PL/SQL: ORA-00905: palavra-chave não encontrada
alguém saberia me ajudar?
Obrigado.
Estou tentando utilizar o MERGE, porém dentro de uma trigger.
A diferença é que ao invés de utilizar INSERT e UPDATE estou tentando utilizar as variáveis :NEW e :OLD, porém me acusa um erro que falta palavra chave, ou algo assim.
É possível utilizar o merge para essa situação?
Segue código de exemplo abaixo:
merge INTO contrato c
USING (
SELECT cd_fornecedor,
nr_cgc_cpf
FROM fornecedor
) f
ON (c.cd_forncedor = f.cd_fornecedor)
WHEN matched THEN :NEW.cd_fornecedor := f.cd_fornecedor
WHEN NOT matched THEN
:NEW.cd_fornecedor := novo_fornecedor(:NEW.nm_responsavel_financeiro,:NEW.tp_contrato,:NEW.ds_endereco_cobranca,:NEW.nr_cpf_cgc,:NEW.nm_cidade,:NEW.nm_uf); -- essa funcao cria um fornecedor novo e retorna o Id do mesmo.
PL/SQL: ORA-00905: palavra-chave não encontrada
alguém saberia me ajudar?
Obrigado.
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Oi jks1903,
Você teria como postar o script DDL das tabelas e da trigger (mesmo que esta compile com erro)?
Talvez fique mais fácil para o pessoal dar uma opinião.
Abraços,
Sergio Coutinho
Você teria como postar o script DDL das tabelas e da trigger (mesmo que esta compile com erro)?
Talvez fique mais fácil para o pessoal dar uma opinião.
Abraços,
Sergio Coutinho
Sergio, bom dia.STCOUTINHO escreveu:Oi jks1903,
Você teria como postar o script DDL das tabelas e da trigger (mesmo que esta compile com erro)?
Talvez fique mais fácil para o pessoal dar uma opinião.
Abraços,
Sergio Coutinho
Eu estive pesquisando um pouco na documentação do Oracle e pelo que vi acho que da forma com eu estava fazendo o Oracle não permite, ao menos em sua versão 10g. No caso então, resolvi de uma outra forma. Mas a dúvida era como utilizar da forma como eu estava fazendo, pois o erro apresentado é de palavra chave não encontrada.
Mas obrigado pela resposta.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes