उदाहरण के लिए पोस्टग्रेज में, मेरे पास इस तरह की एक टेबल है
create table mytable (
a text,
b text
)
और एक फ़ंक्शन जो mytable से एक पंक्ति देता है
CREATE OR REPLACE FUNCTION single_row(param1, param2, ...) RETURNS mytable AS .....
फिर मैं इस फ़ंक्शन को एक ही प्रश्न में कई बार कैसे कॉल कर सकता हूं, और सभी पंक्तियों को वापस कर सकता हूं? जैसे कि मैं वास्तविक तालिका से चयन कर रहा था?
कुछ इस तरह
select * from { single_row(a1, a2, ...) + single_row(b1, b2, ...) + single_row(c1, c2, ...) }
मैं चाहता हूं कि परिणाम इस तरह हों
a | b
-------+-------
row1.a | row1.b
row2.a | row2.b
.
.
.
2 जवाब
त्वरित और गंदा: यदि आप बहुत अधिक नहीं हैं, तो आप प्रत्येक फ़ंक्शन पर कॉलम को पार्स करने का प्रयास कर सकते हैं, उदा। यदि फ़ंक्शन f1
और f2
लौटाता है:
CREATE OR REPLACE FUNCTION single_row()
RETURNS TABLE (f1 INT, f2 INT) AS $$
BEGIN
RETURN QUERY SELECT 1,2;
END;
$$ LANGUAGE plpgsql;
.. आप इसे इस तरह पार्स कर सकते हैं:
SELECT
(single_row()).f1,(single_row()).f2,
(single_row()).f1,(single_row()).f2;
f1 | f2 | f1 | f2
----+----+----+----
1 | 2 | 1 | 2
.. या एकाधिक सबक्वायरी का उपयोग करना:
SELECT * FROM
(SELECT * FROM single_row()) q1,
(SELECT * FROM single_row()) q2
f1 | f2 | f1 | f2
----+----+----+----
1 | 2 | 1 | 2
संपादित करें: टिप्पणियां देखें
SELECT * FROM single_row()
UNION ALL
SELECT * FROM single_row()
SELECT single_raw(), single_raw(), single_raw() ;
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।