यहाँ कैसे मैं यह कर देगी:
Select Identity(int, 1,1) AS PK, DatabaseID
Into #T
From @databases
Declare @maxPK int;Select @maxPK = MAX(PK) From #T
Declare @pk int;Set @pk = 1
While @pk <= @maxPK
Begin
-- Get one record
Select DatabaseID, Name, Server
From @databases
Where DatabaseID = (Select DatabaseID From #T Where PK = @pk)
--Do some processing here
--
Select @pk = @pk + 1
End
[संपादित करें] क्योंकि मैं शायद शब्द को छोड़ दिया "चर" जब मैं पहली बार सवाल पढ़ा है, यहाँ एक अद्यतन प्रतिक्रिया है ...
declare @databases table
(
PK int IDENTITY(1,1),
DatabaseID int,
Name varchar(15),
Server varchar(15)
)
-- insert a bunch rows into @databases
--/*
INSERT INTO @databases (DatabaseID, Name, Server) SELECT 1,'MainDB', 'MyServer'
INSERT INTO @databases (DatabaseID, Name, Server) SELECT 1,'MyDB', 'MyServer2'
--*/
Declare @maxPK int;Select @maxPK = MAX(PK) From @databases
Declare @pk int;Set @pk = 1
While @pk <= @maxPK
Begin
/* Get one record (you can read the values into some variables) */
Select DatabaseID, Name, Server
From @databases
Where PK = @pk
/* Do some processing here */
/* ... */
Select @pk = @pk + 1
End
आप हमें कारण प्रदान कर सके तुम क्यों पंक्तियों पर पुनरावृति करना चाहते हैं कि पुनरावृत्ति की आवश्यकता नहीं है (और जो ज्यादातर मामलों में बड़े अंतर से तेजी से होते हैं) –
पॉप के साथ सहमत हैं ... स्थिति के आधार पर कर्सर की आवश्यकता नहीं हो सकती है। लेकिन अगर आपको – Shawn
की आवश्यकता है तो कर्सर का उपयोग करने में कोई समस्या नहीं है http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them – HLGEM