DO कमांड बनाम PL/pgSQL फ़ंक्शन
DO आदेश पंक्तियों को वापस नहीं करता है। आप NOTICES भेज सकते हैं या RAISE अन्य संदेश (भाषा plpgsql के साथ) या आप एक (अस्थायी) तालिका में लिख सकते हैं और बाद में SELECT इससे बचने के लिए।
लेकिन वास्तव में, इसके बजाय एक (plpgsql) फ़ंक्शन बनाएं, जहां आप रिटर्न प्रकार को RETURNS के साथ परिभाषित कर सकते हैं खंड या OUT / INOUT पैरामीटर और फ़ंक्शन से विभिन्न तरीकों से वापसी।
यदि आप नहीं चाहते कि कोई फ़ंक्शन अन्य कनेक्शनों के लिए सहेजा और दृश्यमान हो, तो एक "अस्थायी" फ़ंक्शन पर विचार करें, जो एक गैर-दस्तावेजी लेकिन अच्छी तरह से स्थापित विशेषता है:
- PostgreSQL में एक अस्थायी फ़ंक्शन कैसे बनाएं?
generate_series() समस्या के लिए
मौजूदा समस्या के लिए आपको किसी की आवश्यकता नहीं है इस का। इसके बजाय इस सरल क्वेरी का प्रयोग करें:
SELECT row_number() OVER () AS running_month
, extract('year' FROM m) AS year
, extract('month' FROM m) AS month
FROM generate_series(timestamp '2012-04-01'
, timestamp '2016-01-01'
, interval '1 month') m;
db<>फिडल यहाँ
क्यों?
- PostgreSQL में दो तिथियों के बीच समय श्रृंखला उत्पन्न करना