T-SQL

Vzorová syntaxe CURSORu

Dvě základní šablony kurzoru. Liší se především syntakticky, kdy druhá varianta nevyžaduje opakované kopírování seznamu parametrů v příkazu FETCH, což je výhodné zejména tehdy, načítá-li kurzor velké množství sloupců z deklarativního dotazu.

-- Varianta 1
DECLARE @name NVARCHAR(128)
DECLARE cur CURSOR FAST_FORWARD FOR
    SELECT name
    FROM sys.tables
    WHERE name LIKE 'tbl%'
    ORDER BY name
 
OPEN cur
FETCH NEXT FROM cur INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
 
    EXECUTE ('delete from ' + @name)
 
    FETCH NEXT FROM cur INTO @name
END

CLOSE cur
DEALLOCATE cur

-- Varianta 2
DECLARE @name NVARCHAR(128)
DECLARE cur CURSOR FAST_FORWARD FOR
    SELECT name
    FROM sys.tables
    WHERE name LIKE 'tbl%'
    ORDER BY name
 
OPEN cur
WHILE 1 = 1
BEGIN
    FETCH NEXT FROM cur INTO @Name
    IF @@FETCH_STATUS <> 0
        BREAK
 
    EXECUTE ('delete from ' + @name)
 
END

CLOSE cur
DEALLOCATE cur

 

Leave a Reply

Your email address will not be published.