SQL - SQL Server 之WHILE循环的坑

设置重复执行 SQL 语句或语句块的条件。 只要指定的条件为真,就重复执行语句。 可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。

语法

-- Syntax for SQL Server and Azure SQL Database  
  
WHILE Boolean_expression   
     { sql_statement | statement_block | BREAK | CONTINUE }

 

参数

Boolean_expression
返回 TRUE 或 FALSE 的表达式 。 如果布尔表达式中含有 SELECT 语句,则必须用括号将 SELECT 语句括起来。

{sql_statement | statement_block}
Transact-SQL 语句或用语句块定义的语句分组。 若要定义语句块,请使用控制流关键字 BEGIN 和 END。

BREAK
导致从最内层的 WHILE 循环中退出。 将执行出现在 END 关键字后面的任何语句,END 关键字为循环结束标记。

CONTINUE
使 WHILE 循环重新开始执行,忽略 CONTINUE 关键字后面的任何语句。

 

 

注解

如果嵌套了两个或多个 WHILE 循环,则内层的 BREAK 将退出到下一个外层循环。 将首先运行内层循环结束之后的所有语句,然后重新开始下一个外层循环。

 

 

示例

A. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE

在以下示例中,如果产品的平均标价小于 $300,则 WHILE 循环将价格乘 2,然后选择最高价格。 如果最高价格小于或等于 $500,则 WHILE 循环重新开始,并再次将价格乘 2。 该循环不断地将价格乘 2,直到最高价格超过 $500,然后退出 WHILE 循环,并输出一条消息。

USE AdventureWorks2012;  
GO  
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300  
BEGIN  
   UPDATE Production.Product  
      SET ListPrice = ListPrice * 2  
   SELECT MAX(ListPrice) FROM Production.Product  
   IF (SELECT MAX(ListPrice) FROM Production.Product) > $500  
      BREAK  
   ELSE  
      CONTINUE  
END  
PRINT 'Too much for the market to bear';

 

使用WHILE语句一定要记得加BREAK!!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值