Er det en måte å løkke gjennom en tabellvariabel i TSQL uten å bruke en markør?
La oss si at jeg har følgende enkle tabellvariabel:
declare @databases table
(
DatabaseID int,
Name varchar(15),
Server varchar(15)
)
-- insert a bunch rows into @databases
Er å erklære og bruke en markør mitt eneste alternativ hvis jeg ønsket å iterere gjennom radene? Er det en annen måte?
231
3
Først og fremst bør du være helt sikker på at du trenger å iterere gjennom hver rad - settbaserte operasjoner vil utføre raskere i alle tilfeller jeg kan tenke meg og vil normalt bruke enklere kode.
Avhengig av dataene dine kan det være mulig å løkke bare ved å bruke utvalgte utsagn som vist nedenfor:
Et annet alternativ er å bruke en midlertidig tabell:
Hvilket alternativ du bør velge, avhenger av strukturen og volumet på dataene dine.
Merk: Hvis du bruker SQL Server, vil du være bedre tjent med å bruke:
Ved å bruke
COUNT
må du berøre hver eneste rad i tabellen,EXISTS
trenger bare å berøre den første (se Josefs svar nedenfor).Slik ville jeg gjort det:
Du kan bruke en while-sløyfe: