Página 1 de 1

Merge - 8i??

Enviado: Qua, 08 Mar 2006 9:21 am
por izaura
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.

Selecionar tudo

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);

Re: Merge - 8i??

Enviado: Seg, 06 Jan 2014 2:05 pm
por stcoutinho
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

Re: Merge - 8i??

Enviado: Qui, 23 Jan 2014 5:40 pm
por fbifabio
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

Selecionar tudo

SELECT ...  IF EXISTE THEN UPDATE ... ELSE INSERT .... END IF;
, ou escrever uma estrutura de comandos similar dentro da aplicação.

[]s

Re: Merge - 8i??

Enviado: Sex, 24 Jan 2014 7:12 am
por stcoutinho
Atualizando ..

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

Selecionar tudo

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