關聯式資料庫本質上是集合導向的,缺乏針對單一資料列的原生操作介面。游標提供了一種機制,將結果集轉化為可逐列處理的「平面檔案」模型,橋接集合式 SQL 與逐列程式邏輯。
| 類型 | 定義方式 | 執行位置 | 特性 |
|---|---|---|---|
| Transact-SQL 游標 | DECLARE CURSOR 語法 | 伺服器端(腳本、預存程序、觸發器) | 不支援區塊擷取,最常用,本教學主軸 |
| API 游標 | OLE DB / ODBC / DB-Library API 函數 | 伺服器端 | 用戶端呼叫 API 函數,由提供者/驅動程式轉送伺服器處理 |
| 用戶端游標 | ADO/RDO 等用戶端庫 | 用戶端 | 在用戶端快取完整結果集,僅支援靜態游標,常作伺服器游標輔助 |
前兩者統稱伺服器游標(後台游標),後者為前台游標。實務上優先使用伺服器游標,除非特定情境需用戶端快取。
游標具有額外負擔(記憶體、鎖定、網路往返)。能用單一 SELECT/UPDATE/DELETE 等集合式操作解決時,務必優先使用集合式操作。游標僅作為最後手段。
理解游標的定位、優缺點與三大類型差異,是撰寫高效 T-SQL 程式的基礎。本系列後續章節將深入各類游標的宣告、操作與進階應用技巧。