SQL Server 的 While 循环用于重复执行一段语句,直到给定条件为 False。While 循环以条件开始,如果条件结果为 True,则执行 BEGIN..END 块中的语句。否则,将不执行。这表明 while 循环可以执行零次或多次。
SQL Server 中 While 循环的语法如下
While Expression
BEGIN
statement 1
statement 2
………….
END
-- This is the statement Outside the block
首先,测试 While 循环内的条件。如果条件为 True,则执行 BEGIN..END 块内的语句或查询。如果条件为 False,它将跳过 BEGIN..END 块,并执行其外部的其他语句。
SQL Server While 循环流程图
以下流程图将直观且完美地向您解释 While 循环。

While 循环将在其开始时检查条件。
- 如果条件为 True,则执行 BEGIN..END 语句中的代码。
- 在 While 循环中,我们必须使用算术运算符来增加和减少值。
- 值增加后,服务器将再次检查条件。只要条件为 True,它就会继续执行。
- 如果表达式计算为 False,则退出 BEGIN..END 块。
让我们看一个例子以便更好地理解
SQL Server While 循环示例
在此示例中,我们声明了两个整数值。接下来,我们使用 While 循环将数字从 1 加到 10。
--Declaring Number and Total Variables DECLARE @Number INT = 1 ; DECLARE @Total INT = 0 ; WHILE @Number < = 10 BEGIN SET @Total = @Total + @Number; SET @Number = @Number + 1 ; END PRINT @Total;
总计 = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

在此查询中,我们首先创建了两个名为 Number 和 Total 的变量,并使用以下语句将它们初始化为 1 和 0。
DECLARE @Number INT = 1 ; DECLARE @Total INT = 0 ;
在下一行,我们使用了 while 循环条件。如果条件结果为真,则将该数字添加到总数中。否则,它将退出迭代。我们还将 Number 值设置为递增(@Number = @Number + 1)。递增后,过程将重复执行,直到条件结果为 False(即 @Number = 11)。
WHILE @Number < = 10 BEGIN SET @Total = @Total + @Number; SET @Number = @Number + 1 ; END
在这里,我们在 while 循环外部使用了一个 print 语句。无论条件是 True 还是 False,此语句都会执行。
PRINT @Total;
SQL Server 无限 While 循环
如果您忘记递增(SET @Num = @Num + 1)或递减值,while 循环将执行无数次,也称为无限循环。例如
-- Infinite Example --Declaring Num and Total Variables DECLARE @Num INT = 1 ; WHILE @Num < = 10 BEGIN PRINT @Num; -- SET @Num = @Num + 1 ; END
输出
Messages
-------
1
1
1
1
1
1
1
.
.
.
在这里,Number 始终为 1,并且始终小于 10。因此,while 循环内的 PRINT 语句将继续执行无数次。现在,让我们取消注释以下语句。
-- SET @Num = @Num + 1 ;
现在,当它达到 10 时,条件将失败。让我们看看输出。请参阅嵌套文章。
1
2
3
4
5
6
7
8
9
10