在現代螢幕應用中,使用者會前後捲動資料。 對於這類應用來說,回到先前擷取的列會是一個問題。 一種可能是關閉再重新開啟游標,然後持續取回資料列,直到游標到達所需的資料列。 另一種方法是讀取結果集,將其快取到本地,並在應用程式中實作捲動功能。 這兩種可能性僅適用於小型結果集,後者較難實作。 更好的解決方案是使用 可捲動的游標,可以在 結果集中前後移動。
可捲動游標常用於現代螢幕應用程式,使用者可來回捲動資料。 然而,應用程式應僅在僅向前游標無法完成工作時使用可捲動游標,因為可捲動游標通常比僅向前游標更昂貴。
向後移動的能力引發了一個不適用於僅前進游標的問題:可捲動游標是否應該偵測先前取得的資料列變更? 也就是說,它應該偵測更新、刪除和新插入的列嗎?
這個問題的產生是因為結果集的定義——即符合特定條件的列集合——並未說明何時檢查列是否符合該標準,也未說明列每次擷取時是否必須包含相同資料。 前者省略使得可捲動游標能偵測列是否已插入或刪除,後者則使得能偵測更新的資料。
偵測變化的能力有時有用,有時則無效。 例如,會計應用程式需要一個忽略所有變更的游標,如果游標顯示最新的變更,結算帳目就不可能。 另一方面,航空公司訂位系統需要一個游標來顯示資料的最新變更,如果沒有這個游標,必須不斷地重新查詢資料庫以顯示最新的航班可用狀態。
為了滿足不同應用的需求,ODBC 定義了四種不同類型的可捲動游標。 這些游標在成本及偵測結果集變更的能力上各不相同。 請注意,如果可捲動游標能偵測到列的變更,它只能在嘗試重新取得這些列時偵測到變更,資料來源無法通知游標目前已取得的資料列的變更。 同時也要注意,變更的可見性也受交易隔離層級控制;更多資訊請參見 交易隔離。
此章節包含下列主題。