У меня есть эта функция:
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?