Postgresql ऐतिहासिक रूप से कमांड स्तर पर प्रक्रियात्मक कोड का समर्थन नहीं करता है - केवल कार्यों के भीतर। हालाँकि, Postgresql 9 में, इनलाइन कोड ब्लॉक को निष्पादित करने के लिए समर्थन जोड़ा गया है जो प्रभावी रूप से कुछ इस तरह का समर्थन करता है, हालांकि सिंटैक्स शायद थोड़ा अजीब है, और SQL सर्वर के साथ आप जो कर सकते हैं उसकी तुलना में कई प्रतिबंध हैं। विशेष रूप से, इनलाइन कोड ब्लॉक एक परिणाम सेट नहीं लौटा सकता है, इसलिए इसका उपयोग आपके द्वारा ऊपर उल्लिखित के लिए नहीं किया जा सकता है।
सामान्य तौर पर, यदि आप कुछ प्रक्रियात्मक कोड लिखना चाहते हैं और इसका परिणाम वापस करना चाहते हैं, तो आपको इसे एक फ़ंक्शन के अंदर रखना होगा। उदाहरण के लिए:
CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$
DECLARE
one int;
two int;
BEGIN
one := 1;
two := 2;
RETURN one + two;
END
$$;
SELECT somefuncname();
PostgreSQL वायर प्रोटोकॉल, जहाँ तक मुझे पता है, कई परिणाम सेट लौटाने वाले कमांड जैसी चीज़ों की अनुमति नहीं देता है। इसलिए आप केवल T-SQL बैच या संग्रहीत कार्यविधियों को PostgreSQL फ़ंक्शंस में मैप नहीं कर सकते।