游標宣告後必須用 OPEN 命令開啟,才能開始讀取資料。開啟過程中 SQL Server 會執行查詢、建立結果集,並根據游標選項決定是否建立暫存表。
OPEN { { [GLOBAL] cursor_name } | cursor_variable_name }
GLOBAL:指定為全域游標。cursor_name:宣告的游標名稱。若同名全域與區域游標並存,GLOBAL 關鍵字決定使用哪一個。cursor_variable_name:游標變數。開啟時會將宣告中的變數值帶入。INSENSITIVE 或 STATIC:建立暫存表於 tempdb 儲存結果集。KEYSET:建立暫存表儲存鍵值。OPEN 失敗。tempdb。游標成功開啟後,@@CURSOR_ROWS 記錄游標內目前已讀入的資料列數。為提升效能,SQL Server 允許非同步填充 KEYSET 或靜態游標:若優化器預估列數超過 sp_configure cursor threshold,會另啟執行緒持續讀取,此時可先行處理已讀入的資料。

SCROLL 或 INSENSITIVE,則為總列數。CLOSE/DEALLOCATE 釋放資源。OPEN 是游標生命週期的關鍵步驟,理解其內部建立暫存表、非同步填充與 @@CURSOR_ROWS 的行為,有助於撰寫高效能、可擴展的游標程式碼。