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

PL/pgSQL में '$$' का उपयोग किस लिए किया जाता है?

ये डॉलर चिह्न ($$ ) का उपयोग डॉलर के उद्धरण . के लिए किया जाता है , जो कार्य परिभाषाओं के लिए किसी भी तरह से विशिष्ट नहीं है . इसका उपयोग SQL स्क्रिप्ट में कहीं भी स्ट्रिंग अक्षर (स्थिरांक) को संलग्न करने वाले सिंगल कोट्स को बदलने के लिए किया जा सकता है।

किसी फ़ंक्शन का शरीर ऐसा स्ट्रिंग शाब्दिक होता है। नेस्टेड सिंगल कोट्स (पुनरावर्ती) से बचने के लिए डॉलर-कोटिंग सिंगल कोट्स के लिए एक पोस्टग्रेएसक्यूएल-विशिष्ट विकल्प है। आप फ़ंक्शन बॉडी को सिंगल-कोट्स में भी संलग्न कर सकते हैं। लेकिन तब आपको शरीर के सभी एकल-उद्धरणों से बचना होगा:

CREATE OR REPLACE FUNCTION check_phone_number(text)
  RETURNS boolean
  LANGUAGE plpgsql STRICT IMMUTABLE AS
'
BEGIN
  IF NOT $1 ~  e''^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$'' THEN
    RAISE EXCEPTION ''Malformed string "%". Expected format is +999 999'';
  END IF;
  RETURN true; 
END
';

यह इतना अच्छा विचार नहीं है। इसके बजाय डॉलर-उद्धरण का प्रयोग करें। अधिक विशेष रूप से, $$ . के बीच एक टोकन भी लगाएं प्रत्येक जोड़ी को अद्वितीय बनाने के लिए - आप फ़ंक्शन बॉडी के अंदर नेस्टेड डॉलर-कोट्स का उपयोग करना चाह सकते हैं। मैं वास्तव में बहुत कुछ करता हूं।

CREATE OR REPLACE FUNCTION check_phone_number(text)
  RETURNS boolean  
  LANGUAGE plpgsql STRICT IMMUTABLE AS
$func$
BEGIN
 ...
END
$func$;

देखें:

  • पोस्टग्रेएसक्यूएल में सिंगल कोट्स के साथ टेक्स्ट डालें

आपके दूसरे प्रश्न के अनुसार:
CREATE FUNCTION पर सबसे उत्कृष्ट मैनुअल पढ़ें अपने उदाहरण की अंतिम पंक्ति को समझने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में किसी मौजूदा तालिका में स्वत:वृद्धिशील प्राथमिक कुंजी कैसे जोड़ें?

  2. मैं नोड-पोस्टग्रेज के साथ पीजी में कई पंक्तियों को ठीक से कैसे सम्मिलित करूं?

  3. पोस्टग्रेज पासवर्ड प्रमाणीकरण विफल रहता है

  4. क्या किसी जॉइन में टेबल का क्रम मायने रखता है, जब LEFT (बाहरी) जॉइन का उपयोग किया जाता है?

  5. PostgreSQL में Ln () फ़ंक्शन कैसे काम करता है