carloscps 0 Denunciar post Postado Outubro 10, 2007 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
Motta 645 Denunciar post Postado Outubro 10, 2007 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
alphamek 2 Denunciar post Postado Outubro 10, 2007 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