Det finns en annan fördel med att använda DECLARE @local_variable CURSOR
syntax som jag just upptäckte.
Fördelen uppstår när en lagrad procedur anropar en annan, och båda procedurerna har markörer öppna samtidigt. Om DECLARE cursor_name CURSOR
används för att definiera markörerna, och båda procedurerna använder samma cursor_name, då får du
Å andra sidan, Om DECLARE @local_variable CURSOR
används för att definiera markörerna i de överordnade och underordnade lagrade procedurerna, sedan @local_variable
är lokal för varje procedur och det finns ingen konflikt. För dem som inte har använt den här metoden tidigare, här är ett exempel, med @C
som den lokala variabeln:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...