擷取和捲動
從資料指標擷取資料列的作業稱為提取。可用的提取選項有:
FETCH FIRST
擷取資料指標中的第一個資料列。
FETCH NEXT
從最近擷取資料列的下一列擷取。
FETCH PRIOR
從最近擷取資料列的上一列擷取。
FETCH LAST
擷取資料指標中的最後一個資料列。
FETCH ABSOLUTE n
如果 n 為正整數,擷取資料指標第一列起算的第 n 列。如果 n 為負整數,擷取資料指標最末列往前算的第 n 列。如果 n 為 0,則不擷取任何一個資料列。
FETCH RELATIVE n
從最近擷取的資料列起算的第 n 列。如果 n 為正整數,擷取最近擷取資料列往後算的第 n 列。如果 n 為負整數,擷取最近擷取資料列往前算的第 n 列。如果 n 為 0,則再次擷取同一個資料列。
資料指標開啟時,資料指標中目前資料列的位置以邏輯而言在第一列的前面。如果以下的擷取選項是在資料指標開啟後第一次進行的擷取作業,會產生下列各種擷取選項:
FETCH FIRST
擷取資料指標中的第一個資料列。
FETCH NEXT
擷取資料指標中的第一個資料列。
FETCH PRIOR
不擷取任何一個資料列。
FETCH LAST
擷取資料指標中的最後一個資料列。
FETCH ABSOLUTE n
如果 n 為正整數,擷取資料指標第一列起算的第 n 列。如果 n 為負整數,擷取資料指標最末列往前算的第 n 列 (例如 n = -1 則傳回資料指標中的最後一個資料列)。如果 n 為 0,則不擷取任何一個資料列。
FETCH RELATIVE n
如果 n 為正整數,擷取資料指標的第 n 列。如果 n 為負值或 0 則不擷取任何一個資料列。
Transact-SQL 資料指標會限制為一次只能提取一個資料列。API 伺服器資料指標則支援每一次提取時,提取整個資料列區塊。支援一次提取多個資料列的資料指標稱為區塊資料指標。
資料指標分類
資料指標可由其支援的擷取選項分類為:
順向
資料列必須從第一列至最後一個資料列的方向循序擷取。僅允許 FETCH NEXT 擷取作業。
可捲動
可於資料指標隨機擷取任何資料列。允許使用任何擷取作業 (除非動態資料指標不支援擷取絕對作業)。
對於支援線上應用程式來說,可捲動的資料指標將特別有用。資料指標可以對應到應用程式中的方格或清單方塊。當使用者在方格周圍向上向下捲動時,應用程式會使用捲動提取從使用者要查看的資料指標中擷取資料列。
擷取資料列的 API
現用陳述式、函數或使用方法的 API 以不同的名稱來擷取資料列:
Transact-SQL 資料指標使用 FETCH FIRST、FETCH LAST、FETCH NEXT、FETCH PRIOR、FETCH ABSOLUTE(n) 和 FETCH RELATIVE(n) 陳述式。
OLE DB 使用的方法有 IRowset::GetNextRows、IRowsetLocate::GetRowsAt、IRowsetLocate::GetRowsAtBookmark 和 IRowsetScroll::GetRowsAtRatio。
ODBC 使用 SQLFetchScroll 函數,或在一個資料列執行與 FETCH NEXT 具有同樣功能的 SQLFetch 函數。SQLFetchScroll 支援區塊資料指標和所有的擷取選項 (first、last、next、prior、absolute 和 relative)。
ADO 使用 Move、MoveFirst、MoveLast、MoveNext 和 MovePrevious?Recordset 方法來取得資料指標的位置。接著會使用 GetRows 資料錄集方法來擷取該位置的一或多個資料列。GetRows 也可以在 Start 參數設定為要擷取的資料列數時,直接呼叫。