Ich glaube nicht, dass Postgres dieses Update-Konstrukt unterstützt (der einfache Test, den ich versucht habe, schlägt mit demselben Fehler fehl). Möglicherweise müssen Sie so etwas tun:
CREATE OR REPLACE FUNCTION DATA_UPDATE
(mission NUMERIC,
task NUMERIC)
RETURNS void as '
DECLARE
offScheduled int4;
totalReceivers int4;
BEGIN
IF mission IS NOT NULL THEN
select COALESCE(SUM(RR.TRQ_FUEL_OFFLOAD),0),
COALESCE(SUM(RR.TRQ_NUMBER_RECEIVERS),0) into offScheduled, totalReceivers
FROM REFUELING_REQUEST RR, MISSION_REQUEST_PAIRING MRP
WHERE MO.MSN_INT_ID = MRP.MSN_INT_ID
AND MO.MO_INT_ID = MRP.MO_INT_ID
AND MRP.REQ_INT_ID = RR.REQ_INT_ID;
UPDATE MISSION_OBJECTIVE MO
SET MO.MO_TKR_TOTAL_OFF_SCHEDULED = offScheduled,
MO.MO_TKR_TOTAL_RECEIVERS = totalReceivers
WHERE MO.MSN_INT_ID = mission
AND MO.MO_INT_ID = task ;
END IF;
END;
' LANGUAGE plpgsql;
... vorausgesetzt, ich habe die Logik nicht zu sehr verstümmelt;)
Ich habe mir die Freiheit genommen, die Art und Weise, wie die Parameter definiert sind, und den Rückgabetyp zu ändern (da es so aussieht, als würden Sie tatsächlich nichts von der Funktion zurückgeben?)
Bearbeiten:Hoppla, ich habe das falsche Konstrukt für select into
verwendet ...