這是我在debug時發現的。假設以下SQL:
DECLARE @i int; set @i=0; WHILE @i < 10 BEGIN DECLARE @t TABLE ( No int ); INSERT @t ( No ) VALUES ( @i ); IF @i = 9 BEGIN SELECT * FROM @t; END SET @i = @i+1; END
就寫程式的思維,最後的輸出結果應該是只有一筆No為9的資料,但實際執行結果卻會有10筆資料。
No
———–
0
1
2
3
4
5
6
7
8
9
所以,在迴圈內,一開始記得要清空資料表變數的內容,才不會得到詭異的結果。如下:
DECLARE @i int; set @i=0; WHILE @i < 10 BEGIN DECLARE @t TABLE ( No int ); DELETE FROM @t; INSERT @t ( No ) VALUES ( @i ); IF @i = 9 BEGIN SELECT * FROM @t; END SET @i = @i+1; END