चर के लिए डिफ़ॉल्ट मान सेट करना psql में समर्थित नहीं है, लेकिन आप इसे वैकल्पिक हल का उपयोग करके कर सकते हैं।
यह psql कमांड:
\set myVar :myVar
कुछ भी नहीं करता है यदि चर पहले से ही psql के माध्यम से सेट किया गया था (इसका मतलब है, myVar फिर से उसके मान पर सेट है), अन्यथा चर को शाब्दिक रूप से स्ट्रिंग :myVar
पर सेट किया गया है ।
इस परिस्थिति और अन्य psql कमांड का उपयोग करना \gset
, आप वास्तव में myVar के लिए एक डिफ़ॉल्ट मान सेट कर सकते हैं। इसे आप sql स्क्रिप्ट के शीर्ष पर रखें:
\set myVar :myVar
-- now myVar is set to the string ':myVar' if was not already set.
-- Checking it using a CASE statement:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN 'default_value'
ELSE :'myVar'
END AS "myVar" \gset -- < \gset call at end of the query
ऐसा लगता है कि यह केवल टेक्स्ट वेरिएबल्स के साथ काम करता है, लेकिन यदि आपको न्यूमेरिक वेरिएबल्स की आवश्यकता है तो आप न्यूमेरिक पर कास्ट कर सकते हैं:
SELECT CASE
WHEN :'myVar'= ':myVar'
THEN '10'
ELSE :'myVar'
END::numeric AS "myVar" \gset
\gset कैसे काम करता है:
\gset
आपको एक चुनिंदा क्वेरी के परिणाम से एक चर सेट करने की अनुमति देता है। परिणाम चर को कॉलम नाम की तरह नाम दिया गया है, यही कारण है कि आपको खंड की आवश्यकता है AS "myVar"
क्वेरी के अंत में (यदि आप अपरकेस अक्षरों के साथ चर नामों का उपयोग करना चाहते हैं तो दोहरे उद्धरण चिह्नों को न भूलें)।
उदाहरण के लिए कमांड:
SELECT 'hello' AS var1 \gset
चर सेट करता है var1
करने के लिए hello
, वही
\set var1 hello
अधिक जानकारी के लिए यहां देखें:http://www.postgresql.org /docs/9.4/static/app-psql.html