Minimér antal variabler i cursor fetch
Jeg har den opfattelse, at det kan være en fordel hvis man kunne undgå flere lokale variabel-ærklæringer, når man skulle fetche i et cursor-loop.I nogle SQL-sprog (bl.a. Oracle) har man variabler af type ROWTYPE, så man kun behøves en variable for en hel række, og i selve cursor-loopet så kan referere ned i den enkelte kolonne, lidt a'la dette:
DECLARE @MyRow ROWTYPE
// jeg ved godt ROWTYPE findes ikke i MS SQL ;-)
DECLARE MyCur CURSOR READ_ONLY
FOR
SELECT FirsName, LastName
FROM PhoneBook
OPEN MyCur
FETCH NEXT FROM MyCur
INTO @MyRow
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @MyRow.FirstName
FETCH NEXT FROM MyCur
INTO @MyRow
END
CLOSE MyCur
DEALLOCATE MyCur
Dette er et MEGET simpelt pseudo-ekesempel, men selve cursor loopet skal både køre hurtigt og hyppigt, og der indgår betydeligt flere variabler, end Fornavn og Efternavn, og der sker en hel del mere i selve cursor-loopet.
Så kort fortalt: Kan man undgå at skulle erklære en variabel for hver kolonne man fetcher?