游標 提供在結果集中逐列或多列前後導覽的能力,彷彿一個可定位任意位置的指標,允許對特定資料列進行處理。本文系統整理游標的組成架構與三大分類體系。
SELECT 陳述式定義的資料列集合。| 分類 | 執行位置 | 適用場景 |
|---|---|---|
| API 伺服器游標 | 伺服器端 | 用戶端透過 API 函數 (ODBC, OLE DB) 要求伺服器處理游標邏輯 |
| Transact-SQL 游標 | 伺服器端 | T-SQL 腳本、儲存程序、觸發器中使用 DECLARE CURSOR 語法 |
| API 用戶端游標 | 用戶端 | 將整個結果集快取於用戶端記憶體,僅支援靜態與只進游標 |
前兩者統稱為「伺服器游標」,資源消耗在伺服器端;用戶端游標則將負載轉移至用戶端。
tempdb 臨時表,永遠唯讀。FETCH 都重新評估,開銷最大,並發控制最複雜。FETCH NEXT 循序讀取,不支援捲動。tempdb,成員與順序固定。DECLARE CURSOR 綁定 SELECT 並定義屬性 (SCROLL, READ_ONLY 等)。OPEN 執行查詢填充游標,位置指向第一列前。FETCH INTO 逐列取出資料至變數 (不支援區塊提取)。CLOSE 釋放結果集鎖定,保留游標定義可重開。DEALLOCATE 徹底釋放資源。僅支援 靜態 與 只進 兩種類型,適合小型結果集離線處理,不適用高併發大數據量場景。