sqlserver 資料庫 SQL迴圈語句

來源:互聯網
上載者:User

關鍵字: sqlserver 資料庫 SQL迴圈語句
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end

---------------

while 條件
begin
執行操作
set @i=@i+1
end

WHILE
設定重複執行 SQL 陳述式或語句塊的條件。只要指定的條件為真,就重複執行語句。可以使用 BREAK 和 CONTINUE 關鍵字在迴圈內部控制 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 關鍵字後的任何語句。

注釋
如果嵌套了兩個或多個 WHILE 迴圈,內層的 BREAK 將導致退出到下一個外層迴圈。首先運行內層迴圈結束之後的所有語句,然後下一個外層迴圈重新開始執行。

樣本
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'

B. 在帶有遊標的過程中使用 WHILE
以下的 WHILE 結構是名為 count_all_rows 過程中的一部分。下例中,該 WHILE 結構測試用於遊標的函數 @@FETCH_STATUS 的傳回值。因為 @@FETCH_STATUS 可能返回 –2、-1 或 0,所以,所有的情況都應進行測試。如果某一行在開始執行此預存程序以後從遊標結果中刪除,將跳過該行。成功提取 (0) 後將執行 BEGIN...END 迴圈內部的 SELECT 語句。

USE pubs
DECLARE tnames_cursor CURSOR
FOR
     SELECT TABLE_NAME
     FROM INFORMATION_SCHEMA.TABLES
OPEN tnames_cursor
DECLARE @tablename sysname
--SET @tablename = 'authors'
FETCH NEXT FROM tnames_cursor INTO @tablename
WHILE (@@FETCH_STATUS <> -1)
BEGIN
     IF (@@FETCH_STATUS <> -2)
     BEGIN   
        SELECT @tablename = RTRIM(@tablename)
        EXEC ('SELECT ''' + @tablename + ''' = count(*) FROM '
              + @tablename )
        PRINT ' '
    END
     FETCH NEXT FROM tnames_cursor INTO @tablename
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.