熱門文章

星期三, 3月 23, 2011

SQL 迴圈

--宣告Cursor的資料來源Table
DECLARE vendor_cursor CURSOR FOR
SELECT Field1, Field2, Field3
FROM SourceTableName
WHERE Field4 IN
(
SELECT DISTINCT Field4
FROM ConditionTableName
GROUP BY Field4
HAVING COUNT(*) > 1
)
ORDER BY Field1 , Field2 DESC

--開啟Cursor
OPEN vendor_cursor

--Cursor第一次讀取資料
--資料INTO要與來源Table(SourceTableName)的SELECT欄位的順序,格數,數量相同
FETCH NEXT FROM vendor_cursor
INTO @Field1, @Field2, @Field3

--迴圈開始
--判斷迴圈狀態
WHILE @@FETCH_STATUS = 0
BEGIN
--迴圈內想要做的邏輯
--!@#$%^&*
--!@#$%^&*
--!@#$%^&*


--回圈內重複抓取資料
FETCH NEXT FROM vendor_cursor
INTO @Field1, @Field2, @Field3
END
CLOSE vendor_cursor;
DEALLOCATE vendor_cursor