annotazione UPDATE se presente; altro INSERT in Oracle
-
16-10-2019 - |
Domanda
C'è una funzione di Oracle che indicano l'esistenza di un record, o di qualsiasi altra tecnica utile per raggiungere questo obiettivo?
EDIT: utilizzando l'istruzione MERGE che ho fatto:
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);
ho l'errore dicendo che è col3 identificativo valido. Non ci sono errori di battitura, ed è esistente column.p_val1, p_val2, p_val3 e p_val4 sono parametri di stringa che sono passati alla stored procedure. Sto pensando che il problema potrebbe risiedere in questi params, forse dovrebbero essere collocati all'interno di un'istruzione WHERE? Tutte le idee?
Soluzione
Siete alla ricerca di merge
in 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 );
Altri suggerimenti
Se vuoi nella MERGE
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow