Слияние с оракулом. Как я могу его использовать?

У меня есть эта функция:

      Procedure UpdateDefaultWeight  ( vYear Number, costWeight Number, qualityWeight Number, serviceWeight Number ) 
      AS

        type weight_table is table of Number(5,2) index by varchar2(50);
        weightArray weight_table;
        currentPosition varchar2(50);
      Begin

        weightArray('Cost Weighting')    := costWeight;
        weightArray('Quality Weighting') := qualityWeight;
        weightArray('Service Weighting') := serviceWeight;

        currentPosition := weightArray.first;

        Loop
          Exit When currentPosition is null;
          Insert Into GVS.GVSSD16_DFLT_WEIGHT
            ( cal_year, metric_name, metric_val )
          Values
            ( vYear, currentPosition, weightArray(currentPosition) ); 

          currentPosition := weightArray.next(currentPosition);
        End Loop;
      END;

Прямо сейчас, когда я это написал, он просто выполняет INSERT. Тем не менее, мне нужно, чтобы UPSERT. Я просмотрел документацию по MERGE, но в основном это просто оставило меня в замешательстве относительно того, как применить синтаксис к моему конкретному случаю.

Я посмотрел здесь и здесь и понял суть, но синтаксис меня не устраивает.

Кто-нибудь хочет помочь новичку в Oracle?

5
задан Community 23 May 2017 в 12:33
поделиться