-- A) 2-krat deklarovat kurzor a mazanie kurzora: ---- To drop a cursor: ---- 1) open c6; close c6; deallocate c6 ---- 2) end the session ---- 3) declare the cursor as LOCAL: ---- 4) use a cursor variable: -- B1) Vypiste obsah tabulky pomocou cursor-u: -- Vytvorte tabulku t1 s tromi riadkami a vytlacte ju pomocou cursora -- B2) Vkladat riadky do tabulky pomocou cursor-u: -- Vytvorte tabulku t1 s tromi riadkami, tabulku t2 do ktorej prenesiete riadky pomocou cursora -- A) 2krat deklarovat kurzor ---- Nie 2krat: use OsobaVztah; --declare c6 cursor for select * from Osoba declare c6 cursor LOCAL for select * from Osoba -- OK open c6 --fetch next from c6 # 1.solution - with this row OK! close c6 deallocate c6 GO declare c6 cursor for select * from Osoba -- ERROR ---- 1) open c6; close c6; deallocate c6 --open c6 --close c6 --deallocate c6 ---- 2) end the session ---- 3) declare the cursor as LOCAL: declare c1 cursor LOCAL for select * from Osoba ---- 4) use a cursor variable: declare @cursor cursor set @cursor = cursor for select * from Osoba open @cursor fetch next from @cursor close @cursor deallocate @cursor -- B1,B2) Vkladat riadky do tabulky pomocou cursora: -- Uloha1: Vytvorte tabulku t1 s tromi riadkami -- Uloha2: potom tabulku t2 do ktorej prenesiete riadky pomocou cursora -- FETCH NEXT FROM c1 INTO @i, @c -- insert @t3 values(@i, @c) ---- alebo -- insert t3 values(@i, @c) --3/4 use tempdb; if object_id('t1') is not null drop table t1 go create table t1(v1 int, v2 int) go insert t1 values (1,10), (1,100), (1,1000), (1,10000) if object_id('t2') is not null drop table t2 go create table t2(x int, y int) go ---- 0 - declare variables declare @i int declare @j int ---- 1 - declare cursor declare c cursor for select * from t1 ---- 2 - open cursor open c ---- 3 - fetch the next record from the cursor fetch next from c into @i, @j while @@fetch_status = 0 begin --print(cast(@i as varchar(2)) + ', ' + cast(@j as varchar(5)) ) -- B1 insert t2 values(@i,@j) --B2 ---- 3 - fetch the next record from the cursor fetch next from c into @i, @j end ---- 4 - close cursor close c ---- 5 - deallocate cursor deallocate c Select * from t2