Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Merge En Oracle 10g

Estas en el tema de Merge En Oracle 10g en el foro de Oracle en Foros del Web. Amigos cuando estoy haciendo un merge que me actualice y me inserte. tabla respuesta_est fknum_preg_car es foraneo de la tabla pregunta fkencuestaEST_ESTP_ID foreneo de la ...
  #1 (permalink)  
Antiguo 12/02/2012, 01:20
 
Fecha de Ingreso: febrero-2012
Mensajes: 1
Antigüedad: 12 años, 5 meses
Puntos: 0
Mensaje Merge En Oracle 10g

Amigos cuando estoy haciendo un merge que me actualice y me inserte.

tabla respuesta_est
fknum_preg_car es foraneo de la tabla pregunta
fkencuestaEST_ESTP_ID foreneo de la tabla estudiante
fkencuestaEST_PEUN_ID foraneo de la tabla periodo
respuesta

En mysql lo hago de esta forma

insert into respuesta_est (respuesta,fknum_preg_car,fkencuestaEST_ESTP_ID,fk encuestaEST_PEUN_ID) values('1002',1,12,103) on duplicate key update Respuesta=2;

En oracle 10g lo hago de esta forma

MERGE INTO
respuesta_est res
USING ( SELECT respuesta, fknum_preg_car, fkencuestaEST_ESTP_ID, fkencuestaEST_PEUN_ID FROM respuesta_est
WHERE fknum_preg_car=4 and fkencuestaEST_ESTP_ID=12 and fkencuestaEST_PEUN_ID=103 and respuesta=888588) e
ON ( e.fkencuestaEST_ESTP_ID =res.fkencuestaEST_ESTP_ID and e.fknum_preg_car=res.fknum_preg_car)
WHEN MATCHED
THEN
UPDATE
SET res.respuesta = 000012 where res.fkencuestaEST_ESTP_ID = e.fkencuestaEST_ESTP_ID and res.fknum_preg_car = e.fknum_preg_car
WHEN NOT MATCHED
THEN
insert(res.respuesta,res.fknum_preg_car,res.fkencu estaEST_ESTP_ID,res.fkencuestaEST_PEUN_ID)VALUES (9111111, e.fknum_preg_car, e.fkencuestaEST_ESTP_ID, e.fkencuestaEST_PEUN_ID) where e.respuesta <> 888588;

Con el único inconveniente que no me esta insertando cuando un el mismo estudiante me inserta otra respuesta..

Espero un pronta colaboración
Gracias por su tiempo.

Etiquetas: 10g, insert, select, sql, tabla, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:32.