Hay otra ventaja de usar el DECLARE @local_variable CURSOR
sintaxis que acabo de descubrir.
La ventaja ocurre cuando un procedimiento almacenado llama a otro y ambos procedimientos tienen cursores abiertos al mismo tiempo. Si DECLARE cursor_name CURSOR
se usa para definir los cursores, y ambos procedimientos usan el mismo nombre_cursor, entonces obtienes
Por otro lado, si DECLARE @local_variable CURSOR
se usa para definir los cursores en los procedimientos almacenados principal y secundario, luego @local_variable
es local para cada procedimiento y no hay conflicto. Para aquellos que no han usado este método antes, aquí hay un ejemplo, usando @C
como la variable local:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...