9.4 SQL Server循环
SQL Server循环
简介
WHILE
语句是一个控制流语句,它允许重复执行语句块,只要指定的条件为TRUE。
WHILE
语法:
WHILE Boolean_expression BEGIN 语句或语句块--如果是单个语句则可以省略BEGIN...END, END
如果在进入循环时Boolean_expression的计算结果为FALSE,则不会执行WHILE循环内的语句。
在WHILE
循环内,必须更改一些变量的值,以使Boolean_expression
在某些点返回FALSE
。否则,循环将会是一个死循环。
注意,如果Boolean_expression
包含SELECT
语句,则必须将其括在括号中。
要退出循环,可以使用BREAK
语句。要跳过循环的当前迭代并开始新的迭代,可以使用CONTINUE
语句。
示例
以下示例说明了如何使用WHILE语句打印从1到5的数字:
DECLARE @counter INT = 1; WHILE @counter <= 5 BEGIN PRINT @counter; SET @counter = @counter + 1; END
输出:
1 2 3 4 5
示例中:
- 首先,我们声明了
@counter
变量,并将其值设置为1。 - 然后,在WHILE语句的条件下,我们检查@counter是否小于或等于5。如果不是,我们打印出@counter并将其值增加一。经过五次迭代后,@counter为6,这导致WHILE子句的条件求值为FALSE,循环停止。
要了解如何使用 WHILE
循环逐行处理,请查看后面的游标教程。
BREAK
简介
要退出循环的当前迭代,可以使用BREAK语句。
语法:
WHILE Boolean_expression BEGIN -- 语句 IF condition BREAK; -- 其他语句 END
在此语法中,一旦满足IF语句中指定的条件,BREAK语句将立即退出WHILE循环。将跳过BREAK和END关键字之间的所有语句。
假设我们在另一个WHILE
循环中嵌套了一个WHIL
循环:
WHILE Boolean_expression1 BEGIN -- statement WHILE Boolean_expression2 BEGIN IF condition BREAK; END END
在这种情况下,BREAK
语句只退出WHILE
语句中最内层的循环
注意,BREAK
语句只能在WHILE
循环内使用。IF
语句通常与BREAK
语句一起使用,但不是必需的。
示例
以下示例说明了如何使用BREAK语句:
DECLARE @counter INT = 0; WHILE @counter <= 5 BEGIN SET @counter = @counter + 1; IF @counter = 4 BREAK; PRINT @counter; END
输出:
1 2 3
CONTINUE
简介
CONTINUE语句停止循环的当前迭代并开始新的迭代。
语法:
WHILE Boolean_expression BEGIN -- 代码 IF condition CONTINUE; -- 如果满足条件,将跳过代码 END
在此语法中,一旦condition
计算为TRUE,循环的当前迭代就会停止。循环的下一次迭代将继续,直到Boolean_expression
的计算结果为FALSE。
与BREAK
语句类似,CONTINUE
语句通常与IF
语句结合使用。注意,这不是强制性的。
示例
DECLARE @counter INT = 0; WHILE @counter < 5 BEGIN SET @counter = @counter + 1; IF @counter = 3 CONTINUE; PRINT @counter; END
输出:
1 2 4 5
在WHILE循环中,我们在每次迭代中@counter
的值加1
。如果@counter
为3
,则跳过使用CONTINUE
语句打印值。这就是为什么在输出中,没有看到数字3
的原因。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器