相對和絕對捲動

SQLFetchScroll 中的大多數捲動選項是將游標相對於當前位置或絕對位置來定位。 SQLFetchScroll 支援擷取下一個、上一個、第一個和最後一個列集,以及相對擷取(從當前列集起點擷取 n 列)和絕對擷取(從第 n 列起始擷取列集)。 若 n 在絕對取指中為負數,則從結果集末尾開始計算行數。 因此,行 -1 的絕對提取是指取出以結果集中最後一行開始的行集。

動態指標能偵測插入和刪除結果集的列,但若要檢索特定位置的列,唯一的方法是從結果集的起始點開始讀取,這可能會較慢。 此外,在動態游標中,絕對提取並不太實用,因為列號會隨著插入和刪除而改變;因此,連續提取相同的列號可能會得到不同的資料列。

僅使用 SQLFetchScroll 來滿足區塊游標功能(如報告)的應用程式,通常只會通過結果集一次,僅使用取得下一列集的選項。 螢幕式應用程式則能充分利用 SQLFetchScroll 的所有功能。 如果應用程式將列集大小設定為螢幕上顯示的列數,並將螢幕緩衝區綁定為結果集,就能直接將捲動條操作轉換成呼叫 SQLFetchScroll

捲軸操作 SQLFetchScroll 捲動選項
上一頁 SQL_FETCH_PRIOR
向下翻頁 SQL_FETCH_NEXT
成員陣容 SQL_FETCH_RELATIVE FetchOffset 等於 -1
線路中斷 SQL_FETCH_RELATIVE 中 FetchOffset 為 1
頂部的捲軸框 SQL_FETCH_FIRST
底部的捲軸框 SQL_FETCH_LAST
隨機滾軸框位置 SQL_FETCH_ABSOLUTE

這類應用程式還需要在捲動操作後定位滾動框,這需要當前的列號和列數。 對於目前的列號,應用程式可以選擇追蹤目前的列號,或是用 SQL_ATTR_ROW_NUMBER 屬性呼叫 SQLGetStmtAttr 來取得。

游標中的列數(即結果集大小)可作為診斷標頭的SQL_DIAG_CURSOR_ROW_COUNT欄位使用。 此欄位的值僅在 SQLExecuteSQLExecDirectSQLMoreResult 被呼叫後定義。 此計數可為近似或精確計數,視駕駛者能力而定。 可透過呼叫 SQLGetInfo 並輸入游標屬性的資訊型別,並檢查游標類型的回傳位元為 SQL_CA2_CRC_APPROXIMATE 或 SQL_CA2_CRC_EXACT 來判斷驅動程式的支援。

動態游標從不支援精確的列數。 對於其他類型的游標,驅動程式可以支援精確或近似的列數,但不能同時支援兩者。 若驅動程式不支援特定游標類型的精確或近似列數,SQL_DIAG_CURSOR_ROW_COUNT欄位會顯示迄今已取得的列數。 無論驅動程式支援哪些功能,若 SQLFetchScrollOperation 為 SQL_FETCH_LAST,則 SQL_DIAG_CURSOR_ROW_COUNT 欄位將包含精確的列數。