PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज फंक्शन एंड लूप और रिटर्न एरर

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 कथन के रूप में फिर से लिखा जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AWS_s3.query_export_to_s3 फ़ंक्शन का उपयोग करके AWS RDS पोस्टग्रेज़ तालिका को S3 में CSV में निर्यात करने में असमर्थ

  2. आवश्यक PostgreSQL निगरानी - भाग 1

  3. PostgreSQL डेटाबेस क्लस्टर के साथ अत्यधिक उपलब्ध कैनवास LMS को कैसे परिनियोजित करें

  4. PostgreSQL क्वेरी का उपयोग करके दैनिक आँकड़ों के साथ समय श्रृंखला उत्पन्न करें

  5. कमांड लाइन से PostgreSQL CSV आयात