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

फ़ंक्शन में कॉलम की गतिशील संख्या कैसे लौटाएं?

यह RECORD रिटर्निंग फंक्शन के लिए संभव है।

CREATE FUNCTION calculation(how_many integer) RETURNS SETOF RECORD
LANGUAGE plpgsql
AS $fff$
BEGIN
    IF how_many = 1
        THEN RETURN QUERY SELECT 'foo'::text;
    ELSIF how_many = 2
        THEN RETURN QUERY SELECT 'foo'::text, 'bar'::text;
    END IF;
END;
$fff$
;

और अब आप यह कर सकते हैं:

jbet=> SELECT * FROM calculation(1) AS f(first_col text);
 first_col
-----------
 foo
(1 row)

jbet=> SELECT * FROM calculation(2) AS f(first_col text, second_col text);
 first_col | second_col
-----------+------------
 foo       | bar
(1 row)

बहुत गंभीर नकारात्मक पक्ष यह है कि हर बार जब आप फ़ंक्शन को कॉल करते हैं तो आपको दिए गए कॉलम के सेट को परिभाषित करना होता है, इसलिए मुझे नहीं लगता कि आपको यह उत्तर उपयोगी लगेगा:)

वैसे भी, Postgresql को प्रत्येक SELECT पहले . के लौटे हुए प्रकार को जानना होगा यह क्वेरी चलाता है, इसलिए एक या दूसरे तरीके से आपको कॉलम को परिभाषित करना होगा।

JSON रिटर्न वैल्यू एक उचित उत्तर हो सकता है यदि आप केवल डेटा चाहते हैं और परवाह नहीं है कि अलग कॉलम हैं या नहीं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्ट्रट्स 2 को हाइबरनेट और पोस्टग्रेएसक्यूएल से कैसे कनेक्ट करें

  2. PostgreSQL में समय मान से मिनट घटाएं

  3. PostgreSQL 12 में नया:जेनरेट किए गए कॉलम

  4. PostgreSQL अक्षांश देशांतर क्वेरी

  5. PostgreSQL - स्ट्रिंग को ASCII पूर्णांक में बदलें