27,579
社区成员
发帖
与我相关
我的任务
分享
使用 WHILE...BREAK 或 CONTINUE 发送反馈
请参阅
全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器: J#语言筛选器: JScript
访问和更改数据库数据 > 过程 Transact-SQL > 控制流 >
Visual Basic(Declaration)
C#
C++
J#
JScript
只要指定的条件为 True 时,WHILE 语句就会重复语句或语句块。
下面两个 Transact-SQL 语句通常和 WHILE 一起使用:REAK 或 CONTINUE。BREAK 语句退出最内层的 WHILE 循环,CONTINUE 语句则重新开始 WHILE 循环。例如,如果没有其他行可以处理,程序可能执行 BREAK 语句。例如,如果要继续执行代码,则可以执行 CONTINUE 语句。
注意:
如果将 SELECT 语句用作 WHILE 语句的条件,则 SELECT 语句必须在括号中。
示例
A. 在游标中使用 WHILE
下面的示例使用 WHILE 语句控制执行的提取数。
复制代码
USE AdventureWorks;
GO
DECLARE abc CURSOR FOR
SELECT * FROM Purchasing.ShipMethod;
OPEN abc;
FETCH NEXT FROM abc
WHILE (@@FETCH_STATUS = 0)
FETCH NEXT FROM abc;
CLOSE abc;
DEALLOCATE abc;
GO
其他有效的 WHILE 条件测试可能如下所示:
复制代码
WHILE (@ACounterVariable < 100)
或
复制代码
WHILE EXISTS(SELECT LastName FROM Person.Contact WHERE FirstName = N'Anne')
B. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE
在以下示例中,如果产品的平均标价小于 $300,则 WHILE 循环将价格乘 2,然后选择最高价格。如果最高价格小于或等于 $500,则 WHILE 循环重新开始,并再次将价格乘 2。该循环不断地将价格乘 2,直到最高价格超过 $500,然后退出 WHILE 循环,并输出一条消息。
复制代码
USE AdventureWorks;
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';
if....else用法
if month(getdate())<7
begin
print('上半年')
select(getdate())
end
else
begin
print('下半年')
select(getdate())
end
--while,continue,break用法
declare @i int
set @i=1
while @i<20
begin
set @i=@i+1
if @i<=19
continue
print @i
end
declare @i int
set @i=1
while @i<20
begin
if @i=19
break
print @i
set @i=@i+1
end