Is er een manier om door een tabelvariabele te lopen in TSQL zonder een cursor te gebruiken?
Laten we zeggen dat ik de volgende eenvoudige tabelvariabele heb:
declare @databases table
(
DatabaseID int,
Name varchar(15),
Server varchar(15)
)
-- insert a bunch rows into @databases
Is het declareren en gebruiken van een cursor mijn enige optie als ik door de rijen wil itereren? Is er een andere manier?
231
3
Eerst en vooral moet je er absoluut zeker van zijn dat je elke rij moet itereren - set-gebaseerde operaties zullen sneller werken in elk geval dat ik kan bedenken en zullen normaal gezien eenvoudigere code gebruiken.
Afhankelijk van je gegevens kan het mogelijk zijn om te lussen door enkel gebruik te maken van select statements zoals hieronder getoond:
Een ander alternatief is het gebruik van een tijdelijke tabel:
Welke optie u moet kiezen, hangt echt af van de structuur en het volume van uw gegevens.
Note: Als u SQL Server gebruikt, kunt u beter gebruik maken van:
Het gebruik van
COUNT
zal elke rij in de tabel moeten aanraken, deEXISTS
hoeft alleen de eerste aan te raken (zie Josef's antwoord hieronder).Hier is hoe ik het zou doen:
Je kunt een while-lus gebruiken: