आप psql वैरिएबल इस्तेमाल कर सकते हैं . वे SQL कोड में प्रक्षेपित हैं। प्रति दस्तावेज़:
ध्यान दें कि (प्रति दस्तावेज़ ):
इसलिए आप $1
. फॉर्म के पोजिशनल पैरामीटर के साथ काम नहीं कर सकते . मुझे लगता है कि आप फ़ंक्शन निकायों से कोड के इन टुकड़ों की प्रतिलिपि बनाते हैं, और यही स्थितित्मक पैरामीटर का कारण है?
PostgreSQL 9.2 के बाद से, यहां तक कि SQL फ़ंक्शन भी नाम से पैरामीटर का संदर्भ दे सकते हैं। प्रति दस्तावेज़:
PL/pgSQL फ़ंक्शन v8.0 से फ़ंक्शन बॉडी में नामित पैरामीटर का समर्थन कर रहे हैं।
मेरा पसंदीदा नामकरण परंपरा _
. के साथ फ़ंक्शन पैरामीटर को प्रीपेन्ड करना है नामकरण संघर्ष से बचने के लिए। लेकिन यह स्वाद और शैली की बात है।
केवल आधा समाधान
तो, आपका उदाहरण इस तरह काम कर सकता है:
db=> \set _name 'troy'
db=> \set _email '[email protected]'
db=> select * from users where name=:'_name' and email=:'_email';
आपको अभी भी क्वेरी स्ट्रिंग तैयार करनी है ...
उद्धरणों को :'_name'
. में नोट करें . इसका वही प्रभाव है जो quote_literal()
applying को लागू करने जैसा है स्ट्रिंग पर। मैनुअल में विवरण।