處理完游標資料後必須關閉以釋放結果集與資料記錄鎖。CLOSE 關閉游標但不釋放游標佔用的資料結構。若後續需重新開啟,應使用 CLOSE。語法:
CLOSE { { [GLOBAL] cursor_name } | cursor_variable_name }
游標用於存儲過程、觸發器、T-SQL 腳本中。若宣告與釋放游標間使用事務結構,事務結束時游標會自動關閉。典型流程:
BEGIN TRANSACTIONCOMMIT TRANSACTION此環境下,第一筆資料正常返回,但事務結束後(無論 COMMIT 或 ROLLBACK),SQL Server 自動關閉游標,導致下一次讀取報錯「游標未開啟」。
使用 SET 命令將 CURSOR_CLOSE_ON_COMMIT 設為 OFF,讓游標在事務結束時保持開啟:
SET CURSOR_CLOSE_ON_COMMIT OFF
CLOSE 不釋放資料結構,需用 DEALLOCATE 刪除游標與游標名/變數關聯,並釋放所有系統資源。語法:
DEALLOCATE { { [GLOBAL] cursor_name } | @cursor_variable_name }
參數含義參閱 13.3 節「開啟游標」。使用 DEALLOCATE @cursor_variable_name 時,游標變數不會被釋放,除非超出使用該游標的存儲過程、觸發器作用域(即游標作用域)。
游標變數為 MS SQL Server 7.0 新增資料類型。定義方式:

SET 將游標賦值給游標變數:

範例 13-5 完整展示 DEALLOCATE 命令用法:

