在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'