SQL SERVER while循環

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'

相關文章
相關標籤/搜索