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

PostgreSQL फ़ंक्शन के तर्क के रूप में तालिका

आप किसी तालिका को पैरामीटर के रूप में पास नहीं कर सकते, केवल तालिका का नाम:

CREATE FUNCTION test.fcttest(tbl text) RETURNS SETOF test.out_table AS $$
BEGIN
  EXECUTE format('INSERT INTO test.out_table '
                   'SELECT id, another_field FROM %I', tbl);
  RETURN QUERY EXECUTE format('SELECT id, another_field FROM %I', tbl);
END;
$$ LANGUAGE plpgsql;

तालिका नाम पास करते समय आपको एक गतिशील कमांड निष्पादित करने की आवश्यकता होती है। आप इसे केवल plpgsql फ़ंक्शन में ही कर सकते हैं। format() . का उपयोग %I . के साथ कार्य करें संशोधक SQL इंजेक्शन से बचाता है। पंक्तियों को RETURN NEXT QUERY . का उपयोग करके लौटाया जाता है वाक्यांश, फिर से एक गतिशील आदेश के साथ।

ध्यान दें कि यह तर्क दोनों तालिका में रिकॉर्ड का एक सेट सम्मिलित करता है test.out_table और फिर रिकॉर्ड का वही सेट लौटाता है। सुनिश्चित नहीं है कि आप वास्तव में यही चाहते हैं।




  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 9.3 . का उपयोग करके CTE UPSERT में DEFAULT मान उत्पन्न करें

  2. पोस्टग्रेज में टेबल के लिए बनाए गए इंडेक्स को कैसे सूचीबद्ध करें

  3. PostgreSQL:मैं उपयोगकर्ता स्तर पर search_path कैसे सेट करूं?

  4. Oracle बल्क कलेक्ट के बराबर PostgreSQL

  5. मैं एक नई स्थापना के बाद Postgresql में कैसे लॉगिन और प्रमाणित करूं?