SQL While 循环

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 Loop FLOW CHART

While 循环将在其开始时检查条件。

  1. 如果条件为 True,则执行 BEGIN..END 语句中的代码。
  2. 在 While 循环中,我们必须使用算术运算符来增加和减少值。
  3. 值增加后,服务器将再次检查条件。只要条件为 True,它就会继续执行。
  4. 如果表达式计算为 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

While Loop 1

在此查询中,我们首先创建了两个名为 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