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

क्वेरी द्वारा लौटाई गई प्रत्येक पंक्ति के लिए मैं एक बार संग्रहीत प्रक्रिया को कैसे निष्पादित करूं?

कर्सर का उपयोग करें

अतिरिक्त:[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 अद्यतन कथन के रूप में चला सकते हैं, तो यह इष्टतम होगा



  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 सर्वर VARCHAR/NVARCHAR स्ट्रिंग में लाइन ब्रेक कैसे सम्मिलित करें?

  2. कैसे ठीक करें "निष्पादन कथन विफल हुआ क्योंकि इसके परिणाम सेट क्लॉज के साथ 1 परिणाम सेट निर्दिष्ट है ..." SQL सर्वर में

  3. SQL सर्वर (T-SQL) में मौजूदा तालिका पर संपीड़न कैसे सक्षम करें

  4. SQL सर्वर में त्रुटि और लेनदेन को लागू करना

  5. मैक पर SQL सर्वर 2019 स्थापित करें