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

PostgreSQL में कर्सर आधारित रिकॉर्ड

<एच4>1. निहित कर्सर

FOR . के निहित कर्सर का उपयोग करना लगभग हमेशा बेहतर होता है लूप कुछ हद तक धीमे और बोझिल स्पष्ट कर्सर का सहारा लेने के बजाय। मैंने हजारों plpgsql फ़ंक्शंस लिखे हैं और केवल एक हाथ से भरा हुआ स्पष्ट कर्सर कोई अर्थ रखता है।

CREATE OR REPLACE FUNCTION avoidable_states()
  RETURNS SETOF varchar AS
$func$
DECLARE
    rec record;
BEGIN   
   FOR rec IN
      SELECT *
      FROM   address ad
      JOIN   city    ct USING (city_id)
   LOOP
      IF rec.city LIKE '%hi%' THEN
          RETURN NEXT rec.city;               
      END IF;
   END LOOP;
END
$func$  LANGUAGE plpgsql STABLE;

इसके अलावा:फ़ंक्शन में कुछ भी नहीं है जिसके लिए अस्थिरता की आवश्यकता होगी VOLATILE . STABLE का उपयोग करें ।

<एच4>2. सेट-आधारित दृष्टिकोण

सेट-आधारित दृष्टिकोण का उपयोग करना लगभग हमेशा बेहतर होता है यदि संभव हो तो . RETURN QUERY का उपयोग करें सीधे एक क्वेरी से सेट के रूप में लौटने के लिए।

CREATE OR REPLACE FUNCTION avoidable_states()
  RETURNS SETOF varchar AS
$func$
BEGIN   
   RETURN QUERY
   SELECT ct.city
   FROM   address ad
   JOIN   city    ct USING (city_id)
   WHERE  ct.city LIKE '%hi%';
END
$func$  LANGUAGE plpgsql STABLE;
<एच4>3. SQL फ़ंक्शन

साधारण मामले (शायद एक सरलीकरण) के लिए, आप एक साधारण SQL फ़ंक्शन या यहां तक ​​कि केवल क्वेरी का उपयोग कर सकते हैं:

CREATE OR REPLACE FUNCTION avoidable_states()
  RETURNS SETOF varchar AS
$func$
   SELECT ct.city
   FROM   address ad
   JOIN   city    ct USING (city_id)
   WHERE  ct.city LIKE '%hi%';
$func$  LANGUAGE sql STABLE;


  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. PostgreSQL में विरासत में मिली तालिकाओं का उपयोग कब करें?

  3. कैस्केड डिलीट सिर्फ एक बार

  4. PostgreSQL में पैटर्न मिलान करते समय स्ट्रिंग से कैसे बचें

  5. अचार के साथ पोस्टग्रेज टेबल में अजगर वस्तु को सहेजना