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

Problemas Merge Oracle

Estas en el tema de Problemas Merge Oracle en el foro de Oracle en Foros del Web. Buenas a todos, tengo una aplicacion que se programo en MySQL y ahora debo migrarla a Oracle, tengo inconveniente con algunos INSERTS que por ejemplo ...
  #1 (permalink)  
Antiguo 13/07/2015, 14:24
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 10 años, 2 meses
Puntos: 27
Problemas Merge Oracle

Buenas a todos, tengo una aplicacion que se programo en MySQL y ahora debo migrarla a Oracle, tengo inconveniente con algunos INSERTS que por ejemplo en MySQL estan asi:

Código MySQL:
Ver original
  1. INSERT INTO menu_roles values (15,36, null, null)  ON DUPLICATE KEY UPDATE cod_men=15


Esto no funciona en Oracle, asi que buscando en Internet, encontre que la funcion MERGE me servia para esta labor. Intente reemplazar este INSERT de la siguiente forma:

Código SQL:
Ver original
  1. MERGE INTO menu_roles s USING (SELECT 36 AS cod_rol, 15 AS cod_men FROM menu_roles WHERE cod_men=15 AND cod_rol=36 ) f
  2. ON (f.cod_rol=s.cod_rol AND f.cod_men=s.cod_men)
  3. WHEN NOT MATCHED THEN INSERT (cod_men, cod_rol, flag_men_dano,flag_men_hab_no_sirve) VALUES
  4. (f.cod_rol, f.cod_men, NULL, NULL);

Y asi:
Código SQL:
Ver original
  1. MERGE INTO menu_roles s USING (SELECT cod_rol, cod_men FROM menu_roles WHERE cod_men=15 AND cod_rol=36 ) f
  2. ON (f.cod_rol=s.cod_rol AND f.cod_men=s.cod_men)
  3. WHEN NOT MATCHED THEN INSERT (cod_men, cod_rol, flag_men_dano,flag_men_hab_no_sirve) VALUES
  4. (f.cod_rol, f.cod_men, NULL, NULL);

No me sale error pero me muestra 0 rows merged, y no realiza la inserción.

Alguien me puede indicar que error tengo, o si hay otra funcion que no sea MERGE para realizar este tipo de inserciones

De antemano, muchas gracias por la ayuda.
  #2 (permalink)  
Antiguo 13/07/2015, 15:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 10 años, 5 meses
Puntos: 360
Respuesta: Problemas Merge Oracle

El merge requiere de ambos escenarios.
Ya tienes el WHEN NOT MATCHED y lo que haces es un INSERT.
Tienes que añadir
WHEN MATCHED THEN
UPDATE SET .....


Nos cuentas
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: Ninguno
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 10:40.