सबसे पहले आपको पूरी तरह से सुनिश्चित होना चाहिए कि आपको प्रत्येक पंक्ति के माध्यम से पुनरावृति करने की आवश्यकता है - सेट आधारित संचालन हर मामले में तेजी से प्रदर्शन करेंगे और सामान्य रूप से सरल कोड का उपयोग करेंगे।
आपके डेटा के आधार पर केवल SELECT
. का उपयोग करके लूप करना संभव हो सकता है नीचे दिखाए गए बयान:
Declare @Id int
While (Select Count(*) From ATable Where Processed = 0) > 0
Begin
Select Top 1 @Id = Id From ATable Where Processed = 0
--Do some processing here
Update ATable Set Processed = 1 Where Id = @Id
End
एक अन्य विकल्प अस्थायी तालिका का उपयोग करना है:
Select *
Into #Temp
From ATable
Declare @Id int
While (Select Count(*) From #Temp) > 0
Begin
Select Top 1 @Id = Id From #Temp
--Do some processing here
Delete #Temp Where Id = @Id
End
आपको जो विकल्प चुनना चाहिए वह वास्तव में आपके डेटा की संरचना और मात्रा पर निर्भर करता है।
नोट: यदि आप SQL सर्वर का उपयोग कर रहे हैं तो आपको निम्न का उपयोग करके बेहतर सेवा दी जाएगी:
WHILE EXISTS(SELECT * FROM #Temp)
COUNT
Using का उपयोग करना तालिका में प्रत्येक पंक्ति को स्पर्श करना होगा, EXISTS
केवल पहले वाले को छूने की जरूरत है (नीचे जोसेफ का जवाब देखें)।