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
