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