Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

carloscps

criar procedure

Recommended Posts

Gostaria de uma ajuda para criação de procedure em Oracle 10gTenho duas tabelas (table1 e table2).Na table1 vou ter dados que vou jogar na table2 e caso o registro já esteja na table2,preciso fazer o update e se não, o insert. Como faço essa implementação no "if" e como faço a declaração da table2.Segue o que tenho montado...AScod_erro NUMBER;message_erro VARCHAR2(255);CURSOR C1 IS SELECT emp, codigo, descricao FROM table1 FOR UPDATE; REGISTRO C1%ROWTYPE; BEGIN OPEN C1; LOOP FETCH C1 INTO REGISTRO; EXIT WHEN C1%NOTFOUND;if ??????? (se o table1.emp=table2.emp então fazer o update, se não o insert)then update table2 set cod=REGISTRO.cod,descricao=REGISTRO.descricao) ; else insert into table2 (emp, codigo, descricao) values (REGISTRO.emp,REGISTRO.cod,REGISTRO.descricao);end if; END LOOP; EXCEPTION WHEN OTHERS THEN cod_erro := SQLCODE; message_erro := SQLERRM; INSERT INTO CARLOS.ERROS_IMPORT VALUES (cod_erro, message_erro, sysdate);update table1 set date=SYSDATE where CURRENT OF c1; CLOSE C1 ; END;obrigadoCarlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

algo assim :

 

update table2 set descricao=REGISTRO.descricao 
where cod=REGISTRO.cod;
if sql%rowcount = 0 then -- não localizou localizou
  insert into table2 (emp, codigo, descricao) values (REGISTRO.emp,REGISTRO.cod,REGISTRO.descricao);
end if;

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq desde criar um procedure para isso utilize o comando MERGE para alcançar o objetivo, pois o MERGE de uma tabela, irá verificar se o dado existe, caso existe ele faz um UPDATE, senão, fará um INSERT!!!e é bem mais performático!!!Consulte o GUIA SQL para obter mais informações.Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.