Aşağıdakileri MS SQL 2008 R2'de çalıştırırsam beklenmedik bir sonuç alırım. Geçen tekrarlamanınSQL imleç içindeki tablo değişkeninin kapsamı
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
Sonuç:
someValue
ID1_ASDF
ID2_ASDF
ID3_ASDF
ID4_ASDF
ID5_ASDF
Sadece tablo değişkeni @tempTable imleç tekrarlamalar arasındaki kapsamında tutulmasını görünüyor
someValue
ID5_ASDF
görmeye beklenen haved - ama Her bir yinelemede bu değişkeni yeniden tanımlamak nasıl mümkün olabilir? Bana hiç mantıklı değil. Ayrıca yine kapsamında olma konusunda benim varsayım yedekler -
ben her tekrarında
delete @tempTable
bunu çözdü.
Bu davranışı herkes açıklayabilir mi?
Teşekkürler, ancak her bir yinelemede değişkeni tekrar bildirmek nasıl mümkün olabilir? – zmaster