SQL Server 中印出游標(Cursor)裡值的基本寫法

要在 SQL Server 中印出游標(Cursor)裡的值,通常是透過 FETCH NEXT 語句將資料抓取到變數中,再使用 PRINT 或 SELECT 將變數內容印出或顯示在訊息視窗,並在迴圈中逐行處理,最後 CLOSE 和 DEALLOCATE 游標;基本步驟包含 DECLARE 游標、OPEN 游標、FETCH 抓取資料、WHILE 迴圈處理、PRINT 顯示,再 CLOSE 釋放游標資源。 

SQL
-- 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:完全移除游標定義。 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *