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

लूप के लिए PL/SQL कर्सर

*1. आपको कर्सर परिभाषा में एक सेलेक्ट और एक अर्धविराम की आवश्यकता है

*2. आप कर्सर के ऊपर फॉर लूप जोड़ सकते हैं

उदाहरण के लिए:

    DECLARE
      cursor c1 is
        SELECT street1
        from test_data;
      r1 c1%ROWTYPE;
    BEGIN
      FOR r1 IN c1 LOOP
         ... do your stuff with r1.street1
      END LOOP;
    END;

वैकल्पिक रूप से, आप स्पष्ट कर्सर परिभाषा से पूरी तरह बच सकते हैं, जैसे:

FOR r1 IN (SELECT street1 FROM test_data) LOOP
   ... do your stuff with r1.street1
END LOOP;

*3. आपके IF स्टेटमेंट में अर्धविराम शामिल नहीं हो सकता - उदा.:

    If
    Instr(r1.street1, 'Cnr', 1) >= 1
    Then

*4. [संपादित करें] ताकि आप अपनी तालिका, कॉलम newstreetnumber को अपडेट करना चाहें और newstreetname - किस स्थिति में आप ऐसा कुछ कर सकते हैं:

    DECLARE
      cursor c1 is
        SELECT street1
        from test_data
        FOR UPDATE;
      r1 c1%ROWTYPE;
    BEGIN
      FOR r1 IN c1 LOOP
         ... do your stuff with r1.street1
         UPDATE test_data
         SET newstreetnumber = ...
            ,newstreetname = ...
         WHERE CURRENT OF c1;
      END LOOP;
    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. SQL क्वेरी DIFFDATE अमान्य पहचानकर्ता लौटाता है

  2. ओरेकल में संग्रहित प्रक्रिया से परिणामसेट कैसे लौटाएं?

  3. Oracle db से .Net ऐप में विशेष वर्णों का उपयोग/प्रदर्शित करने में समस्या

  4. Oracle रिपोर्ट्स (.rdf) को BIRT रिपोर्ट में कनवर्ट करना

  5. Oracle PL/SQL:फंक्शन कर्सर