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

PostgreSQL बाहरी कार्यों को लूप करता है। संभव है कि?

आप नहीं DECLARE (वैश्विक) चर (वहां हैं समाधान ) और न ही सादे SQL के साथ लूप - @bma द्वारा प्रदत्त रिकर्सिव सीटीई के अपवाद के साथ (जो वास्तव में पुनरावृत्ति . है पंक्तियों के ऊपर, लूपिंग नहीं, सख्ती से बोलना)।

हालांकि , वहाँ है DO कथन ऐसे तदर्थ प्रक्रियात्मक कोड के लिए। पोस्टग्रेज 9.0 के साथ पेश किया गया। यह एक बार के फ़ंक्शन की तरह काम करता है, लेकिन कोई पैरामीटर नहीं लेता है और कुछ भी वापस नहीं करता है। आप RAISE कर सकते हैं नोटिस और अन्य, इसलिए आपका उदाहरण ठीक काम करेगा:

DO
$do$
DECLARE
   _counter int := 0;
BEGIN
   WHILE _counter < 10
   LOOP
      _counter := _counter + 1;
      RAISE NOTICE 'The counter is %', _counter;  -- coerced to text automatically
   END LOOP;
END
$do$

यदि अन्यथा निर्दिष्ट नहीं है, तो मुख्य भाग में भाषा डिफ़ॉल्ट रूप से plpgsql . है . आप किसी भी पंजीकृत प्रक्रियात्मक भाषा का उपयोग कर सकते हैं हालांकि, अगर आप इसे घोषित करते हैं (जैसे:LANGUAGE plpython )।

पोस्टग्रेज generate_series() भी ऑफर करता है सेट एड-हॉक उत्पन्न करने के लिए, जो कई मामलों में लूपिंग की आवश्यकता को कम कर सकता है। उदाहरण के लिए SO पर यहां खोज करने का प्रयास करें।

साथ ही, आप WHERE . का उपयोग कर सकते हैं एक डेटा-संशोधित सीटीई में क्लॉज फोर्क मामलों के लिए सादे SQL में और IF .. THEN .. ELSE .. 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. Oracle से PostgreSQL:इसके साथ प्रारंभ/कनेक्ट करें

  2. कैस्केडिंग डिलीट से प्रभावित तालिकाओं को कैसे सूचीबद्ध करें

  3. रेल में Postgresql पर तैयार वक्तव्य

  4. एक विभाजन के भीतर लगातार संख्याओं का सबसे बड़ा समूह ढूँढना

  5. PostgreSQL में साझा हिट कैश