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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top