Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

要在 SQL Server 中印出游標(Cursor)裡的值,通常是透過 FETCH NEXT 語句將資料抓取到變數中,再使用 PRINT 或 SELECT 將變數內容印出或顯示在訊息視窗,並在迴圈中逐行處理,最後 CLOSE 和 DEALLOCATE 游標;基本步驟包含 DECLARE 游標、OPEN 游標、FETCH 抓取資料、WHILE 迴圈處理、PRINT 顯示,再 CLOSE 釋放游標資源。
-- 1. 宣告變數來存放從游標抓取的值
DECLARE @ID INT;
DECLARE @Name NVARCHAR(100);
-- 2. 宣告游標 (例如:從一個名為 Employees 的表格中)
DECLARE EmployeeCursor CURSOR FOR
SELECT EmployeeID, EmployeeName
FROM Employees
WHERE DepartmentID = 1; -- 範例條件
-- 3. 開啟游標
OPEN EmployeeCursor;
-- 4. 第一次抓取第一行資料
FETCH NEXT FROM EmployeeCursor INTO @ID, @Name;
-- 5. 進入迴圈,當還有資料可抓時 (@@FETCH_STATUS = 0 表示成功)
WHILE @@FETCH_STATUS = 0
BEGIN
-- 6. 印出或處理目前抓取到的值
PRINT 'ID: ' + CAST(@ID AS VARCHAR(10)) + ', Name: ' + @Name;
-- 7. 抓取下一行資料
FETCH NEXT FROM EmployeeCursor INTO @ID, @Name;
END
-- 8. 關閉游標
CLOSE EmployeeCursor;
-- 9. 釋放游標
DEALLOCATE EmployeeCursor;
說明:
DECLARE CURSOR:定義游標,並指定要查詢的 SQL 語句。OPEN:執行查詢並將結果集準備好。FETCH NEXT:將結果集中的下一行資料取出,並放入指定的變數中。@@FETCH_STATUS:這是一個系統變數,如果成功抓取資料,它會是 0;如果沒有更多資料,它會變成非 0。WHILE @@FETCH_STATUS = 0:當成功抓取資料時,持續執行迴圈。PRINT:將字串或變數內容顯示在訊息視窗中(在 SSMS 中可以看到)。CLOSE:釋放游標所佔用的資源。DEALLOCATE:完全移除游標定義。