OUT
का इस्तेमाल करें पैरामीटर
एकाधिक स्तंभों के साथ एक पंक्ति वापस करने के लिए। RETURN
इस मामले में प्रकार वैकल्पिक है, मैं मैनुअल यहां :
CREATE OR REPLACE FUNCTION conta_relatos(
_fator_normativo integer
,_fator_determinativo integer
,OUT rel_pri integer
,OUT rel_sec integer
,OUT rel_ref integer
) AS
$func$
DECLARE
tipo_relato text;
BEGIN
rel_pri := 0;
rel_sec := 0;
rel_ref := 0;
FOR tipo_relato IN
SELECT f."Tipo_Relato"
FROM "Vinculos" v
JOIN "Fontes" f ON f."ID" = v."Item"
WHERE v."Fator_Normativo" = _fator_normativo
AND v."Fator_Determinativo" = _fator_determinativo
LOOP
CASE tipo_relato
WHEN '1 - Relato Primário' THEN
rel_pri := rel_pri + 1;
WHEN '2 - Relato Secundário' THEN
rel_sec := rel_sec + 1;
WHEN '3 - Relato Referencial' THEN
rel_ref := rel_ref + 1;
END CASE;
END LOOP;
-- No RETURN needed, OUT parameters are returned automatically.
END
$func$ LANGUAGE plpgsql;
कॉल करें:
SELECT * FROM conta_relatos(1,2);
मैंने आपके कार्य को काफी हद तक सरल बना दिया है। दूसरों के बीच:
- "Simple CASE" आपके असाइनमेंट के लिए।
- शामिल होकर दो प्रश्नों को एक में सरल बनाएं।
संपूर्ण फ़ंक्शन को आसानी से एकल SQL कथन के रूप में फिर से लिखा जा सकता है।