Der er en anden fordel ved at bruge DECLARE @local_variable CURSOR
syntaks, som jeg lige har opdaget.
Fordelen opstår, når en lagret procedure kalder en anden, og begge procedurer har markører åbne på samme tid. Hvis DECLARE cursor_name CURSOR
bruges til at definere markørerne, og begge procedurer bruger det samme cursor_name, så får du
På den anden side, hvis DECLARE @local_variable CURSOR
bruges til at definere markørerne i de overordnede og underordnede lagrede procedurer, derefter @local_variable
er lokal for hver procedure, og der er ingen konflikt. For dem, der ikke har brugt denne metode før, er her et eksempel, der bruger @C
som den lokale variabel:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...