Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2015, 14:24
oscarbt
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 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.