請參閱下面的代碼:TSQL不會造成死循環
declare @crimeurn varchar(20)
DECLARE @finalresults TABLE (crime_urn varchar(20))
DECLARE @potentialresults TABLE (crime_urn varchar(20))
insert into @finalresults values ('1')
DECLARE finalresults_cursor CURSOR FOR
SELECT crime_urn FROM @finalresults
OPEN finalresults_cursor
FETCH NEXT FROM finalresults_cursor INTO @crimeurn
WHILE @@FETCH_STATUS = 0
BEGIN
print @crimeurn
INSERT INTO @finalresults
values ('2')
FETCH NEXT FROM finalresults_cursor INTO @crimeurn
END
select * from @finalresults --line 16
CLOSE finalresults_cursor
DEALLOCATE finalresults_cursor
線16顯示在SQL工作室經理5137個或12342行(它隨機變化)。我預計TSQL會導致無限循環,因爲在每次迭代遊標時,都會在表變量中插入一個插入。
爲什麼它不會導致無限循環?即爲什麼有5,137行或12,342行返回。
以使其更清晰,行爲,你應該改變插入光標與@ crimeurn + 1,而不是「2」,並刪除@potentialresults,爲什麼在世界上你會使用它,不使用 – Fredou 2014-10-06 14:29:15
一個光標在第一個地方插入數據? – 2014-10-06 15:42:15
@肖恩蘭格,業務問題是這樣的:犯罪與犯罪b的鏈接,犯罪與鏈接到犯罪x的犯罪c有關。我不知道每條鏈中有多少鏈接。因此遊標插入是我能看到的唯一方法。 – w0051977 2014-10-06 16:19:11