아래에서 MS SQL 2008 R2를 실행하면 예기치 않은 결과가 발생합니다. 마지막 반복의SQL 커서 내의 테이블 변수의 범위
create table #DataTable (someID varchar(5))
insert into #DataTable
values ('ID1'),('ID2'),('ID3'),('ID4'),('ID5')
declare @data varchar(8);
declare myCursor cursor for
select someID from #DataTable
open myCursor
FETCH NEXT FROM myCursor INTO
@data
WHILE(@@Fetch_Status >=0)
BEGIN
declare @tempTable table (someValue varchar(10))
insert into @tempTable select @data + '_ASDF'
select * from @tempTable
FETCH NEXT FROM myCursor INTO
@data
END
close myCursor
deallocate myCursor
drop table #DataTable
결과 :
someValue
ID1_ASDF
ID2_ASDF
ID3_ASDF
ID4_ASDF
ID5_ASDF
I 만이 테이블 변수 @tempTable가 커서 반복 사이의 범위에 유지되는 것으로 보인다
someValue
ID5_ASDF
를 볼 것으로 예상 비하 -하지만 어떻게 각 반복에서 변수를 다시 선언 할 수 있습니까? 나 한테 이해가 안돼. 또한 여전히 범위 것에 대해 내 가정을 백업 -
나는 각 반복에
delete @tempTable
하여 해결했다.
누구든지이 동작을 설명 할 수 있습니까?
감사합니다.하지만 어떻게 각 반복에서 변수를 다시 선언 할 수 있습니까? – zmaster