SELECT 查詢結果集。@@FETCH_STATUS = 0 表示成功。-- 1. 宣告接收變數
DECLARE @Col1 INT, @Col2 NVARCHAR(50)
-- 2. 宣告游標
DECLARE curDemo CURSOR FOR
SELECT Id, Name FROM DemoTable WHERE Status = 1
-- 3. 開啟
OPEN curDemo
-- 4. 取得第一列
FETCH NEXT FROM curDemo INTO @Col1, @Col2
-- 5. 迴圈處理
WHILE @@FETCH_STATUS = 0
BEGIN
-- 業務邏輯:例如列印、更新其他表、發送通知等
PRINT '處理 ID=' + CAST(@Col1 AS VARCHAR) + ', Name=' + @Col2
-- 6. 取得下一列
FETCH NEXT FROM curDemo INTO @Col1, @Col2
END
-- 7. 關閉
CLOSE curDemo
-- 8. 釋放
DEALLOCATE curDemo
LOCAL FAST_FORWARD READ_ONLY 選項可減少鎖定與資源消耗:DECLARE curDemo CURSOR LOCAL FAST_FORWARD READ_ONLY FOR ...
