No Oracle, existem apenas 2 tipos de cursor, ou seja, cursor implícito e explícito. O que é fácil de entender. Mas, no SQL Server, existem 4 cursores AFAIK, ou seja, estático, dinâmico, somente para frente e rolagem. O que eu sinto muito difícil de entender.
Eu tenho código apenas para frente, cursor dinâmico e estático e, exceto a declaração do cursor, tudo é o mesmo. Então, minha pergunta é, como eles são diferentes?
declare @id int
declare @ename varchar(20)
declare @cnt int
declare cur_emp cursor forward_only for select sid,ename from emp
open cur_emp
set @cnt=@@cursor_rows
while @cnt>0
begin
set @cnt=@cnt-1
print @cnt
fetch next from cur_emp into @id,@ename
print cast(@id as varchar)+' '+@ename
end
close cur_emp
deallocate cur_emp
Mesmo, o código acima não mostra nenhuma saída, exceto o(s) comando(s) concluído(s) com êxito. Mas, quando altero a declaração do cursor para estático. Então, ele está mostrando alguma saída. Por favor me ajude.