ACTUALIZACIÓN registro si está presente; INSERT demás en Oracle
-
16-10-2019 - |
Pregunta
¿Hay alguna función de Oracle que indican la existencia de un registro, o cualquier otra técnica útil para lograr esto?
EDIT: el uso de la instrucción MERGE que hice:
MERGE
INTO lims_min.mytab src
USING lims_min.mytab tgt
ON ( src.col1 = tgt.col1
AND tgt.col1 = p_val1
AND src.col2 = tgt.col2
AND tgt.col2 = p_val2
)
WHEN MATCHED
THEN
UPDATE
SET tgt.col3=p_val3,
tgt.col4=p_val4
WHEN NOT MATCHED
THEN
INSERT (col1, col2, col3, col4)
VALUES (val1, val2, val2, val4);
Me sale el error diciendo que es col3 identificador válido. Sin faltas de ortografía, y que está existiendo column.p_val1, p_val2, p_val3 y p_val4 son parámetros de cadena que se pasan al procedimiento almacenado. Estoy pensando que el problema puede estar en estos parametros, tal vez deberían ser colocados dentro de una instrucción WHERE? Algunas ideas?
Solución
Está buscando merge
en Oracle.
MERGE
INTO target_table tgt
USING source_table src
ON ( src.object_id = tgt.object_id ) //The key to check if the record exists
WHEN MATCHED // if exists
THEN
UPDATE
SET tgt.object_name = src.object_name //update it
, tgt.object_type = src.object_type
WHEN NOT MATCHED // if not exists
THEN
INSERT ( tgt.object_id //then insert
, tgt.object_name
, tgt.object_type )
VALUES ( src.object_id
, src.object_name
, src.object_type );
Otros consejos
Mira en la instrucción MERGE
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow