मुझे नहीं लगता कि Postgres उस अद्यतन निर्माण का समर्थन करता है (मैंने जिस सरल परीक्षण की कोशिश की वह उसी त्रुटि के साथ विफल हो जाता है)। आपको कुछ ऐसा करना पड़ सकता है:
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;
... यह मानते हुए कि मैंने तर्क को बहुत खराब नहीं किया है;)
मैंने मापदंडों को परिभाषित करने के तरीके और रिटर्न प्रकार को बदलने की स्वतंत्रता ली (क्योंकि ऐसा लगता है कि आप वास्तव में फ़ंक्शन से कुछ भी वापस नहीं कर रहे हैं?)
संपादित करें:ओह, मैंने select into
. के लिए गलत निर्माण का उपयोग किया है ...