Merge - 8i??

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qua, 08 Mar 2006 9:21 am

Pessoal, tenho a seguinte merge abaixo, porém a versão do oracle é 8, gostaria de saber como migro esse merge para a versão 8.

Código: Selecionar todos
merge into bx_tbl_agencia bx_ag
using (select distinct party_name,
                       account_number,
                       location 
       from VIEW_GOL_AR_BAIXA_OPENSKIES
      ) v_ag
on ( v_ag.account_number = bx_ag.account_number  and v_ag.location = bx_ag.location )
when not matched then insert (bx_ag.id,
                              bx_ag.party_name,
                              bx_ag.account_number,
                              bx_ag.location)
values (seq_agencia.nextval,
        v_ag.party_name,
        v_ag.account_number,
        v_ag.location);
izaura
Localização: santos-sp

Mensagemem Seg, 06 Jan 2014 2:05 pm

Izaura,

Estou atualizando este tópico antigo em aberto com uma resposta, para o caso de algum forista se deparar com este problema no ORACLE 8.

Por favor, consultar este link para maiores informações:

http://www.tek-tips.com/viewthread.cfm?qid=949305

Abraços,

Sergio Coutinho
stcoutinho
Localização: Sao Paulo - SP

Mensagemem Qui, 23 Jan 2014 5:40 pm

Pessoal,

O Merge é uma instrução que faz parte do padrão ANSI 2003 e o Oracle 8 e 8i não são aderentes a este padrão. Merge só funciona no Oracle 9i ou versão superior. Para fazer o processamento correspondente é necessário criar um bloco PL/SQL com a estrutura
Código: Selecionar todos
SELECT ...  IF EXISTE THEN UPDATE ... ELSE INSERT .... END IF;
, ou escrever uma estrutura de comandos similar dentro da aplicação.

[]s
fbifabio
Localização: São Paulo - SP

Fábio Prado
www.fabioprado.net

Mensagemem Sex, 24 Jan 2014 7:12 am

Atualizando ..

A nota (link) mencionada anteriormente já sugere uma sintaxe adequada:

Código: Selecionar todos
BEGIN
   UPDATE my_table SET some_column = some_value
    WHERE some_condition_is_true;
   IF (sql%ROWCOUNT = 0) THEN
      INSERT INTO my_table .......;
   END IF;
END;


Abraços,

Sergio
stcoutinho
Localização: Sao Paulo - SP



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante