2009-07-20 41 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()函数获得的结果。“也就是说,查找发生在结果集的本地缓存副本上:不在服务器上,因此它不支持任何关于”可滚动游标“的提示

相关问题