Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Vantaggi sull'utilizzo della variabile cursore in SQL Server (dichiara cursore @cn)

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 ...;

...