Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Vantagens de usar a variável cursor no SQL Server (declare @cn cursor)


Há outra vantagem em usar o DECLARE @local_variable CURSOR sintaxe que acabei de descobrir.

A vantagem ocorre quando um procedimento armazenado chama outro e ambos os procedimentos têm cursores abertos ao mesmo tempo. Se DECLARE cursor_name CURSOR é usado para definir os cursores, e ambos os procedimentos usam o mesmo cursor_name, então você obtém

Por outro lado, se DECLARE @local_variable CURSOR é usado para definir os cursores nos procedimentos armazenados pai e filho, então @local_variable é local para cada procedimento e não há conflito. Para aqueles que não usaram este método antes, aqui está um exemplo, usando @C como a variável local:
DECLARE @C AS CURSOR;

SET @C = CURSOR FOR SELECT ...;

OPEN @C;

FETCH NEXT FROM @C INTO ...;

...