SQL Server 2005 BOL谈到了BREAK:
在WHILE或IF ... ELSE语句中退出最内层循环。
我不理解这部分关于IF ... ELSE。看起来你可以把BREAK放在IF里面。实际上BREAK只在WHILE内部工作,并且控制流在循环END之后传递。 BREAK不在WHILE上下文中引发错误,这完全没问题。
我的问题是 - 为什么文档提到IF ... ELSE?
BTW,SQL Server 2000 BOL只说这个:
退出最内层的WHILE循环。
答案 0 :(得分:2)
答案 1 :(得分:1)
然而,SQL2008的解释似乎有些令人困惑。对我而言,这意味着在WHILE循环内的IF ... ELSE语句中断只会退出IF ... ELSE。事实并非如此。
DECLARE @i INT = 0
WHILE @i<10
BEGIN
IF(@i=3)
BEGIN
PRINT 'i=3'
BREAK
END
ELSE
BEGIN
PRINT 'i<>3'
END
SET @i = @i+1
END
PRINT 'out of while'
打印
i<>3
i<>3
i<>3
i=3
out of while