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

plpgsql चर का उपयोग करके n_distinct सेट करते समय त्रुटि

यह डिजाइन द्वारा है। मैनुअल अध्याय परिवर्तनीय प्रतिस्थापन . में व्याख्या करता है :

<ब्लॉकक्वॉट>

परिवर्तनीय प्रतिस्थापन वर्तमान में केवल SELECT . में काम करता है , INSERT , UPDATE ,और DELETE कमांड, क्योंकि मुख्य SQL इंजन केवल इन कमांड में क्वेरीपैरामीटर की अनुमति देता है। गैर-स्थिर नाम या अन्य कथन प्रकारों में मान का उपयोग करने के लिए (आमतौर पर उपयोगिता विवरण कहा जाता है), आपको एक स्ट्रिंग के रूप में उपयोगिता विवरण का निर्माण करना होगा और EXECUTE यह।

आप नहीं EXECUTE . के साथ डायनामिक स्टेटमेंट में मान को पैरामीटराइज़ करें या तो इसलिए कि, अध्याय को उद्धृत करते हुए डायनामिक कमांड निष्पादित करना :

<ब्लॉकक्वॉट>

पैरामीटर प्रतीकों पर एक और प्रतिबंध यह है कि वे केवल SELECT . में काम करते हैं , INSERT , UPDATE , और DELETE आदेश। अन्य प्रकार के कथनों में (जिन्हें सामान्यतया यूटिलिटी स्टेटमेंट कहा जाता है), आपको टेक्स्ट के रूप में मूल्यों को सम्मिलित करना चाहिए, भले ही वे केवल डेटा मान हों।

एकमात्र विकल्प एक plpgsql फ़ंक्शन में मान को कमांड स्ट्रिंग में जोड़ना है। आप format() . का उपयोग कर सकते हैं , लेकिन सरल उदाहरण के लिए, सादा संयोजन सुरक्षित और आसान है::

CREATE OR REPLACE FUNCTION pg_temp.setdistinct(_cnt real)
  RETURNS void
  LANGUAGE plpgsql AS
$$
BEGIN
   EXECUTE 'ALTER TABLE _temp ALTER COLUMN id SET (n_distinct=' || _cnt || ')';
END
$$;

स्कीमा-योग्यता pg_temp. प्रश्न को प्रतिबिंबित करते हुए इसे एक (अनियंत्रित!) "अस्थायी" कार्य बनाता है।
n_distinct के बारे में मैनुअल ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. json, jsonb, hstore, xml, enum, ipaddr, आदि को स्टोर करना कॉलम x के साथ विफल रहता है जो टाइप json का है लेकिन एक्सप्रेशन टाइप कैरेक्टर का है

  2. INSERT से RETURNING ... ON CONFLICT . में बहिष्कृत पंक्तियों को कैसे शामिल करें

  3. PostgreSQL पुनरावर्ती CTE से फ़ंक्शन पर डेटा पास करता है

  4. PostgreSQL में अल्पविराम से अलग की गई सूची के रूप में क्वेरी परिणाम कैसे लौटाएं

  5. पोस्टग्रेएसक्यूएल डेटाबेस को ऑन-प्रेम से एडब्ल्यूएस आरडीएस में माइग्रेट करते समय सामान्य त्रुटियां