在SQL數據庫中,可以通過WHILE實現循環,下面就將為您介紹SQL循環執行while控制,希望對您提升WHILE的使用水平能夠有些幫助。
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
參數
Boolean_expression
返回 TRUE 或 FALSE 的表達式。如果布爾表達式中含有 SELECT 語句,必須用圓括號將 SELECT 語句括起來。
{sql_statement | statement_block}
Transact-SQL 語句或用語句塊定義的語句分組。若要定義語句塊,請使用控制流關鍵字 BEGIN 和 END。
BREAK
導致從最內層的 WHILE 循環中退出。將執行出現在 END 關鍵字后面的任何語句,END 關鍵字為循環結束標記。
CONTINUE
使 WHILE 循環重新開始執行,忽略 CONTINUE 關鍵字后的任何語句。
實例:
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 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
PRINT 'Too much for the market to bear'