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

किसी फ़ंक्शन से लौटाई गई तालिका से अलग-अलग कॉलम कैसे प्राप्त करें?

फ़ंक्शन से वापस आने वाली पंक्तियों को विघटित करने के लिए इसे किसी अन्य तालिका की तरह मानें:

SELECT * FROM karta_pacjenta('foo45678901');

पंक्तियों के एक सेट को लौटाने वाले फंक्शन को "टेबल फंक्शन" भी कहा जाता है।

इसके अलावा, आपने जो प्रस्तुत किया वह काम नहीं करेगा।

CREATE  FUNCTION karta_pacjenta(_pe varchar)
  RETURNS TABLE(data DATE, imie TEXT, nazwisko TEXT
              , diagnoza TEXT,przepisany lek TEXT)  AS
$func$
SELECT w.dzien, p.imie, p.nazwisko, ch.nazwa, l.nazwa
FROM   pacjenci  p
JOIN   diagnozy  d  USING (pesel) -- shorthand if columns are unambiguous
JOIN   wizyty    w  USING (pesel)
JOIN   choroby   ch ON ch.kod_choroby = d.kod_choroby
JOIN   recepty   r  ON r.nr_wizyty = w.nr_wizyty
JOIN   leki      l  ON l.kod_leku = r.kod_leku 
WHERE  p.pesel = _pe
$func$ LANGUAGE sql;
  • कॉलम नामों के लिए सिंगल कोट्स एक सिंटैक्स त्रुटि है। डबल-कोट्स होना होगा। बेहतर होगा कि आप हमेशा गैर-उद्धृत, कानूनी, लोअर केस नामों का उपयोग करें।

  • भाषा का नाम उद्धृत न करें, यह एक पहचानकर्ता है।

बाकी वैकल्पिक है, लेकिन अच्छी सलाह है।

  • एक साधारण SQL फ़ंक्शन यहाँ काम करता है।

  • स्पष्ट जॉइन सिंटैक्स का प्रयोग करें। वही परिणाम, लेकिन बनाए रखना बहुत आसान है।

  • varchar(11) . का उपयोग करना शायद व्यर्थ है सिर्फ varchar . के बजाय या text परम प्रकार के रूप में। (कॉर्नर केस अपवाद लागू होते हैं।)

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres <9.0 . के लिए DO ब्लॉक के बराबर क्या है

  2. डेटाबेस से अनुक्रमिक डेटा पुनर्प्राप्त करने का सबसे तेज़ तरीका क्या है?

  3. Psycopg2 के साथ सर्वर साइड कर्सर का उपयोग कैसे करें

  4. द्वीपों में टाइमस्टैम्प कैसे समूहित करें (मनमाने ढंग से अंतर के आधार पर)?

  5. Postgresql थ्रो नल मान कॉलम में JPA में oneToMany संबंध का उपयोग करते समय नॉट-नल बाधा का उल्लंघन करता है