2009-07-20 98 views

回答

11

它爲查詢創建了一個cursor,它允許您遍歷結果集而無需一次獲取整個結果。具體而言,A scrollable cursor是允許向後迭代的一個。

示例使用:您可以向前滾動,直到找到需要的記錄,並且如果您還需要它們,則迭代回來提取以前的記錄。

+2

如果您打算使用它們還應該參考(實際的)dbms文檔來找出你將使用哪種類型的遊標。對於其中的一些遊標,可滾動版本比僅遊標遊標「甚至更昂貴」,甚至不可用。 – VolkerK 2009-07-20 19:00:51

7

Wikipedia給出了這樣的:

對於非滾動光標,也 爲只進已知的,人們可以在FETCH 每行最多一次,光標 自動移動到緊接 以下行。在 之後的取回操作已檢索到最後一行 將光標定位在最後一行 行之後並返回SQLSTATE 02000 (SQLCODE +100)。

這:

程序可以在結果的任何位置滾動 光標設定 使用FETCH SQL語句。

你應該閱讀前面鏈接的文章,但是這看起來像一些有趣的信息太:

滾動遊標可以潛在 訪問同一行中的結果集 多次。因此,來自其他交易 的修改(插入,更新,刪除 操作)的數據 可能會對結果集 集產生影響。

在PHP中,你可以使用與PDO滾動遊標通過使用預處理語句(見PDOStatement::fetch):

要請求滾動光標 您PDOStatement對象的對象,必須設置 的PDO :: ATTR_CURSOR屬性爲 PDO :: CURSOR_SCROLL當您準備 與PDO :: prepare()的SQL語句。

(還有一個例子進一步那一頁)

似乎什麼有趣的是「滾動」通過ResultSet,而不必讓所有的數據在內存中遍歷它的能力。

1

對於MySQL的不支持=不可用(既不MySQL的(我)也PDO):

mysqli_result :: data_seek(),請注意該手冊指出:「此功能只能與緩衝使用通過使用mysqli_store_result()或mysqli_query()函數獲得的結果。「也就是說,查找發生在結果集的本地緩存副本上:不在服務器上,因此它不支持任何關於」可滾動遊標「的提示

相關問題