PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

plpgsql के अंदर \ set चर का उपयोग करें ब्लॉक घोषित करें

व्याख्या है, मैनुअल के अनुसार :

DO . का मुख्य भाग स्टेटमेंट एक डॉलर-उद्धृत स्ट्रिंग है। तो स्ट्रिंग के अंदर कोई इंटरपोलेशन नहीं।

चूंकि यह एक शाब्दिक स्ट्रिंग होना चाहिए, आप फ्लाई पर स्ट्रिंग्स को भी जोड़ नहीं सकते हैं। मैनुअल:

लेकिन आप स्ट्रिंग को जोड़ सकते हैं और फिर उसे निष्पादित कर सकते हैं।

बोल्ड जोर मेरा। आपको बस उद्धरण सही करना है:

test=# \set test 'some value'
test=# \set code 'DECLARE v_test text := ' :'test' '; BEGIN RAISE NOTICE ''test var is: %'', v_test; END'
test=# DO :'code';
NOTICE: test var is: some value
DO
test=#

लेकिन मैं इसके बजाय एक (अस्थायी) फ़ंक्शन बनाउंगा और मान को पैरामीटर के रूप में पास करूंगा (जहां psql इंटरपोलेशन काम करता है)। dba.SE पर इस संबंधित उत्तर में विवरण:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेएसक्यूएल में टाइमस्टैम्प कॉलम मानों को युग में कनवर्ट करें क्वेरी का चयन करें

  2. एकल मान के लिए पूरी तालिका देखें

  3. PostgreSQL डेटाबेस को दूसरे डेटाबेस में कॉपी करें

  4. PSQLException:ऑटो-प्रतिबद्ध मोड में बड़ी वस्तुओं का उपयोग नहीं किया जा सकता है

  5. अपरकेस कॉलम नाम के साथ रेल का उपयोग कैसे करें?