C'è un altro vantaggio nell'usare il DECLARE @local_variable CURSOR
sintassi che ho appena scoperto.
Il vantaggio si verifica quando una stored procedure ne chiama un'altra ed entrambe le procedure hanno i cursori aperti contemporaneamente. Se DECLARE cursor_name CURSOR
viene utilizzato per definire i cursori ed entrambe le procedure utilizzano lo stesso nome_cursore, quindi ottieni
D'altra parte, If DECLARE @local_variable CURSOR
viene utilizzato per definire i cursori nelle stored procedure padre e figlio, quindi @local_variable
è locale per ciascuna procedura e non vi è alcun conflitto. Per coloro che non hanno mai utilizzato questo metodo prima, ecco un esempio, utilizzando @C
come variabile locale:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...