Има още едно предимство при използването на DECLARE @local_variable CURSOR
синтаксис, който току-що открих.
Предимството възниква, когато една запаметена процедура извиква друга и двете процедури имат отворени курсори едновременно. Ако DECLARE cursor_name CURSOR
се използва за дефиниране на курсорите и двете процедури използват едно и също cursor_name, тогава получавате
От друга страна, ако DECLARE @local_variable CURSOR
се използва за дефиниране на курсорите в родителските и дъщерните съхранени процедури, след това @local_variable
е локален за всяка процедура и няма конфликт. За тези, които не са използвали този метод преди, ето пример с @C
като локална променлива:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...