Er is nog een voordeel aan het gebruik van de DECLARE @local_variable CURSOR syntaxis die ik zojuist heb ontdekt.
Het voordeel doet zich voor wanneer de ene opgeslagen procedure een andere oproept, en beide procedures hebben tegelijkertijd cursors geopend. Als DECLARE cursor_name CURSOR wordt gebruikt om de cursors te definiëren, en beide procedures gebruiken dezelfde cursor_name, dan krijg je
Aan de andere kant, als DECLARE @local_variable CURSOR wordt gebruikt om de cursors in de bovenliggende en onderliggende opgeslagen procedures te definiëren, en vervolgens @local_variable is lokaal voor elke procedure en er is geen conflict. Voor degenen die deze methode nog niet eerder hebben gebruikt, hier is een voorbeeld, met behulp van @C als de lokale variabele:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...