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

PostgreSQL:स्तंभ परिभाषा सूची का उपयोग किए बिना तालिका से गतिशील पंक्तियों को कैसे वापस करें?

anyelement . की हैंडलिंग वापसी प्रकार में वर्णित है। बहुरूपी प्रकार :

आपके मामले में यह तर्क relation_name . है anyelement . के रूप में टाइप किया गया , और NULL::table1 . पास करके , यह वास्तव में योजनाकार को बताता है कि function1 . की यह विशेष कॉल SETOF table1 return लौटाना चाहिए . अब तक बहुत अच्छा।

अब समस्या यह है कि एक बार निष्पादित करने के बाद, फ़ंक्शन SETOF table1 वापस नहीं आता है लेकिन कुछ और। यह वह नहीं है जो निष्पादक उम्मीद कर रहा था, इसलिए त्रुटि।

प्रश्न का शीर्षक होने के बावजूद गतिशील पंक्तियों को कैसे वापस करें... , आप जो चाहते हैं वह गतिशील कॉलम या बहुरूपी परिणाम सेट है।

और यह एसक्यूएल के साथ एक कठिन लड़ाई है, क्योंकि किसी क्वेरी की निष्पादन योजना बनाने के लिए, योजनाकार को प्रत्येक मध्यवर्ती परिणाम के लिए प्रत्येक कॉलम को उसके प्रकार के साथ जानना होगा। यदि आप अपनी क्वेरी को किसी ऐसे फ़ंक्शन के साथ डिज़ाइन करते हैं जिसे इसके आउटपुट की संरचना को खोजने के लिए निष्पादित किया जाना है, जो चिकन और अंडे की समस्या पैदा करता है:नियोजन निष्पादन से पहले होना चाहिए, यह इस पर निर्भर नहीं हो सकता है।

इसकी डायनामिक टाइप-इनफेरिंग तकनीक के साथ anyelement . पर लागू होता है , PostgreSQL पहले से ही इस बाधा को देखते हुए अधिक से अधिक बहुरूपता लागू करने के लिए लिफाफे को आगे बढ़ा रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL डेटाबेस संरचना को कैसे डंप करें (प्रत्येक ऑब्जेक्ट को अलग फ़ाइल में)

  2. बड़ी या अपरिभाषित श्रेणियों के साथ क्रॉसस्टैब

  3. Postgresql 8.2 में नेस्टेड लेनदेन?

  4. Psycopg2 बड़ी चुनिंदा क्वेरी पर मेमोरी का उपयोग करता है

  5. उन तालिकाओं की सूची प्राप्त करना जो एक दृश्य/तालिका PostgreSQL पर निर्भर करती हैं