BOL中的BREAK描述

时间:2010-09-02 10:13:40

标签: sql-server-2005

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循环。

2 个答案:

答案 0 :(得分:2)

SQL 2008 BOL说:

  

退出WHILE中最内层的循环   声明或IF ... ELSE声明   在WHILE循环中。

这可能是SQL 2005文档应该所说的。

答案 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