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

Pl/pgSQL EXECUTE कथन में कोई पैरामीटर $1 नहीं है

आपको यहां कुछ समस्याएं हैं। तत्काल समस्या है:

ऐसा इसलिए होता है क्योंकि $1 SQL के अंदर जिसे आप EXECUTE को सौंप रहे हैं वह $1 जैसा नहीं है मुख्य कार्य निकाय के अंदर। EXECUTE SQL के भीतर क्रमांकित प्लेसहोल्डर EXECUTE के संदर्भ में हैं, न कि फ़ंक्शन के संदर्भ में, इसलिए आपको उन प्लेसहोल्डर्स के लिए EXECUTE को कुछ तर्क प्रदान करने की आवश्यकता है:

execute '...' using dpol_cia, dpol_tipol, dpol_nupol, dpol_conse, dpol_date;
--            ^^^^^

देखें डायनामिक कमांड निष्पादित करना विवरण के लिए मैनुअल में।

अगली समस्या यह है कि आप अपने फ़ंक्शन से कुछ भी वापस नहीं कर रहे हैं जो RETURNS integer . मुझे नहीं पता कि आप क्या वापस करना चाहते हैं, लेकिन शायद आपकी tablea एक सीरियल id है कि आप वापस लौटना चाहेंगे। अगर ऐसा है, तो आप कुछ और इस तरह चाहते हैं:

declare
    tabla text := 'dpol' || extract(year from $5::timestamp);
    id integer;
begin
    execute 'insert into ... values ($1, ...) returning id' into id using dpol_cia, ...;
    --                                        ^^^^^^^^^^^^  ^^^^^^^
    return id;
end

आपके समारोह में।




  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 regexp_replace मिलान अभिव्यक्ति के साथ

  2. मैं उसकेोकू पोस्टग्रेस्क्ल ऐप के लिए पथ कैसे सेट कर सकता हूं?

  3. PostgreSQL के लिए Amazon RDS और Aurora की पेशकशों का अवलोकन

  4. मेरा टाइमस्टैम्प टाइमज़ोन में क्यों स्थानांतरित हो गया है?

  5. Heroku Postgres त्रुटि - ऑपरेटर टाइमज़ोन =पूर्णांक के बिना टाइमस्टैम्प मौजूद नहीं है