मेरे पास PostgreSQL (PLPGSQL) में एक फ़ंक्शन है जो दो तत्वों वाली एक सरणी देता है। जब मैं एक का चयन करें बयान समारोह बुला चलाने के लिए, मैं (उम्मीद के रूप में) एक स्तंभ सरणी युक्त मिलती है:पोस्टग्रेएसक्यूएल कन्वर्ट एरे फ़ंक्शन से कॉलम पर वापस लौटा
[ 1 | 2 ]
:
{1, 2}
मैं सच में करना चाहते हैं क्या इन तत्वों को निकालने के लिए अपने स्वयं के कॉलम हो रहा है
मैं ने पाया है कि मैं कर सकते हैं:
SELECT (MyFunction())[1], (MyFunction())[2]
लेकिन वह दो बार फ़ंक्शन को कॉल करने, इसलिए रन टाइम (इस समारोह एक बहुत समय लेने वाली कार्य है) दोहरीकरण। क्या इसे संभालने का कोई बेहतर तरीका है?
अद्यतन
यहाँ मैं क्या है के एक लगभग पूर्ण प्रतिकृति है:
SELECT table1.a, table1.b, table1.c, (MyFunction(table1.a, table1.b, table1.c))[1],
(MyFunction(table1.a, table1.b, table1.c))[2]
FROM table1
INNER JOIN table2 using(b)
WHERE ... GROUP BY table1.a, table1.b, table1.c;
फिर, यह सरणी से दो कॉलम पैदा करता है, लेकिन मेरे समारोह दो बार कहा जाता है, जो मेरे रन टाइम को दोगुना करता है।
मैं नोट करेंगे कि लौटने सरणी में तत्वों की संख्या हमेशा 2 ... – lightningmanic
हो जाएगा प्राप्त परिणाम का आकार जाना जाता है, होना चाहिए आप एक सरणी वापस लौट रहे हो?यह शायद एक पंक्ति होनी चाहिए। क्या आपके पास उस पर प्रतिक्रिया करने की क्षमता है? – SingleNegationElimination