分享內容(
執行結果如下:

通常我們會在 WHILE 迴圈中,使用 @@FETCH_STATUS 判斷是否要繼續從 CURSOR 中,抓資料出來:
執行的部分結果如下:

最後來看一個把 SELECT 的查詢結果作為 WHILE 迴圈的條件,然後再使用 BREAK 與 CONTINUE 來決定是要離開迴圈或是繼續執行迴圈:
執行結果如下:
9人
BREAK 陳述式可以從最內層的 WHILE 迴圈離開,而 CONTINUE 陳述式則是重新執行 WHILE 迴圈。換句話說,就是當找不到符合的資料時,程式會執行 BREAK 的那段陳述式;而如果需要繼續執行程式碼,自然就會執行 CONTINUE 那段陳述式。
先來個簡單的例子,計算從 1 加到 100 的總和好了:
-- 定義變數 DECLARE @count int, @sum int -- 指定初始值 SET @count = 0 SET @sum = 0 -- 開始計算 WHILE (@count < 101) BEGIN SET @sum = @sum + @count SET @count = @count + 1 END -- 顯示結果 SELECT @sum 總和
執行結果如下:
通常我們會在 WHILE 迴圈中,使用 @@FETCH_STATUS 判斷是否要繼續從 CURSOR 中,抓資料出來:
USE AdventureWorks GO -- 定義變數 DECLARE @Name nvarchar(50) -- 定義 CURSOR DECLARE myCursor CURSOR FOR SELECT [Name] FROM Sales.Store -- 開啟 CURSOR OPEN myCursor -- 抓出資料 FETCH NEXT FROM myCursor INTO @Name -- 檢查 @@FETCH_STATUS 來決定是否要繼續執行 WHILE (@@FETCH_STATUS = 0) BEGIN PRINT N'商店名稱:' + @Name FETCH NEXT FROM myCursor INTO @Name END -- 關閉 CURSOR CLOSE myCursor -- 釋放 CURSOR DEALLOCATE myCursor
執行的部分結果如下:
最後來看一個把 SELECT 的查詢結果作為 WHILE 迴圈的條件,然後再使用 BREAK 與 CONTINUE 來決定是要離開迴圈或是繼續執行迴圈:
USE AdventureWorks GO -- 建立一個測試用的資料表 SELECT [Name], ListPrice INTO myTable FROM Production.Product -- 未調價前的平均價格 SELECT 調價前的平均價格 = AVG(ListPrice) FROM myTable -- 如果平均單價小於 450,則提高 2 倍價格 WHILE (SELECT AVG(ListPrice) FROM myTable) < $450 BEGIN UPDATE myTable SET ListPrice = ListPrice * 2 -- 找出最高的價格 SELECT 最高的價格 = MAX(ListPrice) FROM myTable -- 如果最高價格超過 800,就不再調價 -- 如果沒有超過 800,還要繼續調價 IF (SELECT MAX(ListPrice) FROM myTable) > $800 BREAK ELSE CONTINUE END SELECT 調價後的平均價格 = AVG(ListPrice) FROM myTable -- 刪掉測試用的資料表 DROP TABLE myTable
執行結果如下:
參考資料:Microsoft SQL Server 2005 線上叢書
▼ ADVERTISEMENT ▼
-
‧
-
‧
-
‧
相關問答
- 鐵人賽的疑問?
- 最後一天 -- 鐵人賽對我的意義!!!
- 第一屆iT邦幫忙鐵人賽早鳥獎與鐵人鍊成獎得獎名單
- 小財神來報告一下鐵人賽豐富的獎品與參賽報法囉
- 鐵人賽4
- MS SQL 2008
- 對於這次鐵人賽你認為哪些文章該被檢舉?
- 如何將 MS SQL 2000 上的資料完整的轉移或匯出到 MS SQL 2008?
- 鐵人賽發表的文章,可以同時發佈在自己個人部落格上嗎?
- 無法刪除SQL 2000的使用者
- 將SQL 2000資料庫回存到SQL 2005出現錯訊
- 鐵人賽
- SQL 指令
- SQL Server 2008的趣味影片
- 如何在 T-SQL 中宣告變數
- SQL Server備份發生錯誤
- 如何將SQL 2005 Express版本升級到標準版或企業版
- 請問有沒有類似SQL Naviagtor,TOAD的軟體?
- 鐵人賽5
- 鐵人賽6









