WHILE (Transact

您所在的位置:网站首页 sqlserver数据库排序语句 WHILE (Transact

WHILE (Transact

2024-01-04 23:12| 来源: 网络整理| 查看: 265

WHILE (Transact-SQL) 项目 11/17/2023

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

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

Transact-SQL 语法约定

语法 -- Syntax for SQL Server and Azure SQL Database and Microsoft Fabric WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE } -- Syntax for Azure Azure Synapse Analytics and Parallel Data Warehouse WHILE Boolean_expression { sql_statement | statement_block | BREAK }

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。

参数

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 AdventureWorks2022; 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'; B. 在游标中使用 WHILE

以下示例使用 @@FETCH_STATUS 来控制 WHILE 循环中的游标活动。

DECLARE @EmployeeID as NVARCHAR(256) DECLARE @Title as NVARCHAR(50) DECLARE Employee_Cursor CURSOR FOR SELECT LoginID, JobTitle FROM AdventureWorks2022.HumanResources.Employee WHERE JobTitle = 'Marketing Specialist'; OPEN Employee_Cursor; FETCH NEXT FROM Employee_Cursor INTO @EmployeeID, @Title; WHILE @@FETCH_STATUS = 0 BEGIN Print ' ' + @EmployeeID + ' '+ @Title FETCH NEXT FROM Employee_Cursor INTO @EmployeeID, @Title; END; CLOSE Employee_Cursor; DEALLOCATE Employee_Cursor; GO 示例:Azure Synapse Analytics 和 Analytics Platform System (PDW) C. 简单 While 循环

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

-- Uses AdventureWorks WHILE ( SELECT AVG(ListPrice) FROM dbo.DimProduct) < $300 BEGIN UPDATE dbo.DimProduct SET ListPrice = ListPrice * 2; SELECT MAX ( ListPrice) FROM dbo.DimProduct IF ( SELECT MAX (ListPrice) FROM dbo.DimProduct) > $500 BREAK; END 另请参阅

ALTER TRIGGER (Transact-SQL) 控制流语言 (Transact-SQL) CREATE TRIGGER (Transact-SQL) 游标 (Transact-SQL) SELECT (Transact-SQL)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3