前幾節已詳細說明游標的宣告、讀取、關閉與釋放語法。本節透過實際案例,示範游標變數與巢狀游標在預存程序中的進階應用,幫助開發者更靈活地處理複雜結果集。
游標變數自 SQL Server 7.0 起引入,常用於預存程序、觸發器中傳遞結果集。系統預存程序 sp_cursor_list 即為典型範例:其內部宣告游標變數 @cursor_return,並以 OUTPUT 選項將結果集回傳給呼叫端,結果集包含當前所有游標的屬性值。
提示:在預存程序中,若游標變數使用OUTPUT選項,必須加上VARYING關鍵字,語法為@variable CURSOR VARYING OUTPUT。
建立包含游標的預存程序 jobs_cursor,供用戶端應用程式呼叫並逐筆處理伺服器端傳回的資料列。步驟如下:
jobs_cursor,宣告游標變數並開啟游標,最後將游標變數以 OUTPUT 輸出。

為靈活處理多層次結果集,可在預存程序中使用多層游標。外層游標負責主資料集(如作者資料),內層游標針對每一筆外層資料查詢相關明細(如該作者的書籍),適用於產生巢狀報表的情境。
authors 表資料。

游標變數讓結果集能在程式模組間傳遞,巢狀游標則支援多層次資料的逐筆處理。兩者結合,極大擴展了 T-SQL 在複雜報表、批次處理等場景的表達能力。實務上應注意游標的效能開銷,僅在確實需要逐列處理時使用。