Použití DECLARE @local_variable CURSOR
má další výhodu syntaxi, kterou jsem právě objevil.
Výhoda nastane, když jedna uložená procedura volá jinou a obě procedury mají kurzory otevřené současně. Pokud DECLARE cursor_name CURSOR
se používá k definování kurzorů a oba postupy používají stejný název_kurzoru, pak získáte
Na druhou stranu, pokud DECLARE @local_variable CURSOR
se používá k definování kurzorů v nadřazených a podřízených uložených procedurách, pak @local_variable
je lokální pro každý postup a nedochází k žádnému konfliktu. Pro ty, kteří tuto metodu ještě nepoužili, zde je příklad s použitím @C
jako lokální proměnná:
DECLARE @C AS CURSOR;
SET @C = CURSOR FOR SELECT ...;
OPEN @C;
FETCH NEXT FROM @C INTO ...;
...