2013-01-06 36 views
6

मैं कैसे एक संग्रहीत प्रक्रिया/समारोह में select * from customers की तरह एक साधारण चयन जिज्ञासा को बदलने करते पृ वापस जाने के लिए?सरल PostgreSQL समारोह पंक्तियों

मैं Postgres करने के लिए नए हूँ और create function customers() as returns table/setof सिर्फ सही सवाल यहाँ लग रहा है और इस तरह नहीं किया।

मैं समझता हूँ procs स्नातकोत्तर देश में "कार्यों" कहा जाता है। इस प्रकार create procedure मौजूद नहीं है और मेरे एकमात्र विकल्प या तो दृश्य या फ़ंक्शन बनाना है। मुद्दा create function x() returns setof y मूल्यों की एक अभिभावक अल्पविराम से अलग पंक्ति लौटाता है जिसका उपयोग आगे प्रसंस्करण के बिना नहीं किया जा सकता है (कम से कम मैं जो पीजीएडमिन और रूबी/सीक्वेल में देख रहा हूं)।

create function x() returns table(...) की आवश्यकता है मैं एम्बेड पंक्ति परिभाषा जो मैं नहीं करना चाहती।

मैं वहाँ यह सब के पीछे एक कारण नहीं है यकीन है, लेकिन मैं हैरान हूँ कि सबसे अधिक आम उपयोग इस मुश्किल है हूँ।

+3

[आपने क्या प्रयास किया है?] (Http://whathaveyoutried.com) –

+2

@rebnoob "काम नहीं किया" की बजाय - ** आपके द्वारा किए गए फ़ंक्शन का पूरा पाठ निर्दिष्ट करें और परिणामी त्रुटि संदेश ** के रूप में साथ ही आपके PostgreSQL संस्करण के रूप में। –

+0

बढ़िया! धन्यवाद इरविन और क्रेग। – rebnoob

उत्तर

11

untested है लेकिन अधिकार के बारे में होना चाहिए:

CREATE OR REPLACE FUNCTION getcustomers() RETURNS SETOF customers AS $$ 
SELECT * FROM customers; 
$$ LANGUAGE sql; 
+2

यह काम करता है, धन्यवाद। लेकिन पीजी वास्तविक स्तंभों की बजाय अल्पविराम sep'd मूल्यों के साथ सिर्फ एक कॉलम लौटता प्रतीत होता है, क्या देता है? – rebnoob

+1

@rebnoob आप इसे 'SELECT x से getcustomers() x' जैसे कुछ कह रहे हैं। आप 'select getcustomers();' या 'चुनें * getcustomers() से '' चुनें; '। –

11

मुद्दा "() बनाने के समारोह एक्स y setof रिटर्न" एक paren'd अल्पविराम से अलग पंक्ति मूल्यों जिसके बिना नहीं किया जा सकता रिटर्न आगे प्रसंस्करण

समारोह एक रिकार्ड/पंक्ति प्रकार देता है के बाद से, आप

से कॉल करने के लिए है

व्यक्तिगत कॉलम में लौटाई गई पंक्ति को विघटित करने के लिए।

manual on CREATE FUNCTION एक अच्छा प्रारंभिक बिंदु होना चाहिए। उदाहरण अनुभाग इस विषय को शामिल करता है।

+0

आप महोदय .. एक जेडी और बल के साथ गणना करने के लिए हैं! – faizanjehangir