1. top을 사용하지 않았을때
declare testcur cursor for select name from model..sysobjects where type = 'S'
go
declare @name char(50)
open testcur
fetch testcur into @name
while (@@sqlstatus = 0)
begin
select 'fetch :' +@name + ' sqlstatus: ' + convert(char(2), @@sqlstatus)
fetch testcur into @name
end
select 'fetch :' +@name + ' sqlstatus: ' + convert(char(2), @@sqlstatus)
close testcur
deallocate cursor testcur
go
=========================>결과
마지막 record를 읽고 나서 다음 record 읽을때 @@sqlstatus 값을 변경시킴
fetch :sysqueryplans slqstatus: 0
fetch :sysqueryplans slqstatus: 2
2. top 을 사용한경우
declare testcur cursor for select top 2 name from model..sysobjects where type = 'S'
go
declare @name char(50)
open testcur
fetch testcur into @name
while (@@sqlstatus = 0)
begin
select 'fetch :' +@name + ' sqlstatus: ' + convert(char(2), @@sqlstatus)
fetch testcur into @name
end
select 'fetch :' +@name + ' sqlstatus: ' + convert(char(2), @@sqlstatus)
close testcur
deallocate cursor testcur
go
=========================>결과
마직막 record를 읽고 바로 @@sqlstatus 값도 변경시킴
fetch :sysobjects sqlstatus: 0
fetch :sysindexes sqlstatus: 2
|