कर्सर का उपयोग करें
अतिरिक्त:[MS SQL कर्सर उदाहरण]
declare @field1 int
declare @field2 int
declare cur CURSOR LOCAL for
select field1, field2 from sometable where someotherfield is null
open cur
fetch next from cur into @field1, @field2
while @@FETCH_STATUS = 0 BEGIN
--execute your sproc on each row
exec uspYourSproc @field1, @field2
fetch next from cur into @field1, @field2
END
close cur
deallocate cur
MS SQL में, यहाँ एक उदाहरण लेख है
ध्यान दें कि कर्सर सेट-आधारित संचालन से धीमे होते हैं, लेकिन मैन्युअल जबकि-लूप से तेज़ होते हैं; इस SO प्रश्न में अधिक विवरण
परिशिष्ट 2:यदि आप केवल कुछ अभिलेखों से अधिक संसाधित कर रहे हैं, तो उन्हें पहले एक अस्थायी तालिका में खींचें और कर्सर को अस्थायी तालिका पर चलाएं; यह SQL को टेबल-लॉक में बढ़ने से रोकेगा और ऑपरेशन को गति देगा
अतिरिक्त 3:और निश्चित रूप से, यदि आप प्रत्येक उपयोगकर्ता आईडी के लिए अपनी संग्रहीत प्रक्रिया जो कुछ भी कर रहे हैं उसे इनलाइन कर सकते हैं और पूरी चीज को एकल SQL अद्यतन कथन के रूप में चला सकते हैं, तो यह इष्टतम होगा