在SQL数据库中,能够经过WHILE实现循环,下面就将为您介绍SQL循环执行while控制,但愿对您提高WHILE的使用水平可以有些帮助。web
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]sql
参数
Boolean_expression数据库
返回 TRUE 或 FALSE 的表达式。若是布尔表达式中含有 SELECT 语句,必须用圆括号将 SELECT 语句括起来。express
{sql_statement | statement_block}spa
Transact-SQL 语句或用语句块定义的语句分组。若要定义语句块,请使用控制流关键字 BEGIN 和 END。orm
BREAKhtm
致使从最内层的 WHILE 循环中退出。将执行出如今 END 关键字后面的任何语句,END 关键字为循环结束标记。ci
CONTINUEget
使 WHILE 循环从新开始执行,忽略 CONTINUE 关键字后的任何语句。it
实例:
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
设置个变量,就能实现for(i=0;i<10,i++)
DECLARE @i int
set @i=0
WHILE @i<10
BEGIN
//语句序列
...
set @i=@i+1
END
示例
A. 在嵌套的 IF...ELSE 和 WHILE 中使用 BREAK 和 CONTINUE
在下例中,若是平均价格少于 $30,WHILE 循环就将价格加倍,而后选择最高价。若是最高价少于或等于 $50,WHILE 循环从新启动并再次将价格加倍。该循环不断地将价格加倍直到最高价格超过 $50,而后退出 WHILE 循环并打印一条消息。
USE pubsGOWHILE (SELECT AVG(price) FROM titles) < $30BEGINUPDATE titlesSET price = price * 2SELECT MAX(price) FROM titlesIF (SELECT MAX(price) FROM titles) > $50BREAKELSECONTINUEENDPRINT 'Too much for the market to bear'