कड़ाई से बोलने पर, "plpgsql script" जैसी कोई चीज नहीं है - PL / pgSQL PostgreSQL की डिफ़ॉल्ट प्रक्रियात्मक भाषा है। यह या तो एक SQL स्क्रिप्ट या एक plpgsql फ़ंक्शन / प्रक्रिया है। आपका उदाहरण SQL स्क्रिप्ट को इंगित करता है।
आप इसके बजाय एक (सर्वर-साइड) plpgsql (या sql) फ़ंक्शन बना सकते हैं, जो किसी भी संख्या में तर्क लेता है। जब तक तर्क हैं यह बहुत सरल है values
। यह थोड़ा और अधिक जटिल हो जाता है यदि तर्कों में पहचानकर्ता शामिल होते हैं। तो फिर तुम गतिशील एसक्यूएल और साथ PL / pgSQL का उपयोग करना होगा EXECUTE
।
PL / pgSQL पूर्व में डिफ़ॉल्ट रूप से PostgreSQL 9.0 या बाद में स्थापित है। आपको इसे Postgres 8.3 में प्रति डेटाबेस एक बार इंस्टॉल करना होगा, हालांकि:
CREATE LANGUGAGE plpgsql;
संस्करण की बात: आप PostgreSQL के वर्तमान संस्करण में अपग्रेड करने पर विचार करें । 2013 के अंत तक v8.3 बहुत पुराना हो चुका है।
चूंकि आपको लगता है कि एक तैयार एसक्यूएल स्क्रिप्ट है तो मैं एसक्यूएल फ़ंक्शन प्रदर्शित करूंगा। दो पूर्णांक तर्कों के साथ सरल डमी फ़ंक्शन:
CREATE OR REPLACE FUNCTION func(int, int)
LANGUAGE sql RETURNS void AS
$func$
UPDATE tbl1 SET col1 = $1 WHERE id = $2;
UPDATE tbl2 SET col1 = $1 WHERE id = $2;
$func$;
आप dba.SE पर या SO पर plpgsql के लिए और अधिक परिष्कृत उदाहरण पा सकते हैं ।
आप इस फ़ंक्शन और पैरामीटर को शेल स्क्रिप्ट में कॉल कर सकते हैं: शेल स्क्रिप्ट में कॉल के लिए मूल उदाहरण जो पूर्णांक मापदंडों के लिए इनपुट मापदंडों का उपयोग करता है (आवश्यक मान के आसपास कोई एकल-उद्धरण नहीं):
psql mydb -c "SELECT func($1, $2)"
या किसी भी डेटा प्रकार के साथ:
psql mydb -c "SELECT func2('$1'::text, '$2'::numeric)"
-c
एक कमांड स्ट्रिंग निष्पादित करता है और फिर बाहर निकलता है। मैनुअल में psql के कमांड लाइन तर्कों के बारे में अधिक ।
-v
psql के तर्क की तलाश कर रहे हैं ।