什么是“使用可滚动光标获取行”?
答案 0 :(得分:15)
它为查询创建cursor,允许您迭代结果集而不立即获取整个结果。具体而言,scrollable cursor是允许向后迭代的。{/ p>
使用示例:您可以向前滚动,直到找到所需的记录,然后迭代返回以获取以前的记录(如果您需要它们)。
答案 1 :(得分:8)
Wikipedia给出了这个:
还有一个不可滚动的游标 称为仅向前,一个可以FETCH 每行最多一次,和光标 自动移动到立即 下一行。之后的获取操作 最后一行已被检索 将光标定位在最后一个之后 行并返回SQLSTATE 02000 (SQLCODE +100)。
而且:
程序可以定位可滚动的 光标在结果集中的任何位置 使用FETCH SQL语句。
您应该阅读之前链接的文章,但这看起来也是一些有趣的信息:
可滚动游标可能 访问结果集中的同一行 多次。因此,数据 修改(插入,更新,删除 其他交易中的操作) 可能会对结果产生影响 集。
在PHP中,您可以通过使用预准备语句将可滚动游标与PDO一起使用(请参阅PDOStatement::fetch
):
请求可滚动游标 您的PDOStatement对象,您必须设置 PDO :: ATTR_CURSOR属性为 准备时PDO :: CURSOR_SCROLL PDO :: prepare()的SQL语句。
(该页面下方还有一个例子)
有趣的是能够“滚动”结果集,而不必将内存中的所有数据都迭代到它上面。
答案 2 :(得分:2)
对于Mysql ...不支持=不可用(无论是mysql(i)还是PDO):
mysqli_result :: data_seek(),请注意手册说明:“此函数只能与使用mysqli_store_result()或mysqli_query()函数获得的缓冲结果一起使用。” 也就是说,搜索发生在结果集的本地缓存副本上:不在服务器上。因此,它不支持任何“可滚动游标”的建议。