मैं फॉर-प्रत्येक की तर्ज पर कुछ हासिल करने की कोशिश कर रहा हूं, जहां मैं एक लौटे हुए स्टेटमेंट का आईडेड लेना चाहता हूं और उनमें से प्रत्येक का उपयोग करना चाहता हूं।
DECLARE @i int
DECLARE @PractitionerId int
DECLARE @numrows int
DECLARE @Practitioner TABLE (
idx smallint Primary Key IDENTITY(1,1)
, PractitionerId int
)
INSERT @Practitioner
SELECT distinct PractitionerId FROM Practitioner
SET @i = 1
SET @numrows = (SELECT COUNT(*) FROM Practitioner)
IF @numrows > 0
WHILE (@i <= (SELECT MAX(idx) FROM Practitioner))
BEGIN
SET @PractitionerId = (SELECT PractitionerId FROM @Practitioner WHERE idx = @i)
--Do something with Id here
PRINT @PractitionerId
SET @i = @i + 1
END
फिलहाल मेरे पास कुछ ऐसा है जो ऊपर जैसा दिखता है, लेकिन मुझे त्रुटि मिल रही है:
अमान्य कॉलम नाम 'idx'।
कोई कर सकता था
idxमें @Practitionerनहीं है Practitioner। फॉर-एप्रोच के लिए अक्सर सबसे बेहतर सेट-आधारित विकल्प होते हैं, यदि आप दिखाते हैं कि आप पंक्ति मूल्य के साथ क्या करते हैं तो शायद एक विकल्प का सुझाव दिया जा सकता है।
--Do something with Id hereहै, तो संभावना है कि हम आपको दिखा सकते हैं कि बिना किसी लूप या श्राप के इस समस्या को कैसे हल किया जाए। ज्यादातर मामलों में, आप सेट-आधारित समाधान का उपयोग करना चाहते हैं, क्योंकि SQL सर्वर काम करने के लिए अनुकूलित है। एक समय में एक पंक्ति को लूप करना और उपचार करना निश्चित रूप से अपनी जगह है, लेकिन मुझे संदेह है कि यह नहीं है।