22

什么是“使用可滚动光标获取行”?

4

3 回答 3

17

它为查询创建一个游标,它允许您迭代结果集而无需一次获取整个结果。具体来说,可滚动光标是允许向后迭代的光标。

使用示例:您可以向前滚动,直到找到您需要的记录,如果您也需要它们,则可以迭代返回以获取以前的记录。

于 2009-07-20T18:50:13.053 回答
9

维基百科给出了这个:

使用不可滚动游标,也称为只进游标,每行最多只能 FETCH 一次,并且游标会自动移动到紧随其后的行。检索到最后一行之后的 fetch 操作将游标定位在最后一行之后并返回 SQLSTATE 02000 (SQLCODE +100)。

还有这个 :

程序可以使用 FETCH SQL 语句将可滚动游标定位在结果集中的任何位置。

您应该阅读前面链接的文章,但这看起来也很有趣:

可滚动游标可能会多次访问结果集中的同一行。因此,来自其他事务的数据修改(插入、更新、删除操作)可能会对结果集产生影响。

在 PHP 中,您可以通过使用准备好的语句将可滚动游标与 PDO 一起使用(请参阅 参考资料PDOStatement::fetch):

要为您的 PDOStatement 对象请求可滚动游标,您必须在使用 PDO::prepare() 准备 SQL 语句时将 PDO::ATTR_CURSOR 属性设置为 PDO::CURSOR_SCROLL。

(该页面下方还有一个示例)

看起来有趣的是能够“滚动”通过结果集,而无需获取内存中的所有数据来迭代它。

于 2009-07-20T18:53:16.727 回答
3

对于 Mysql ...不支持 = 不可用(mysql(i) 和 PDO 都不可用):

mysqli_result::data_seek(),请注意手册指出:“此函数只能用于通过使用 mysqli_store_result() 或 mysqli_query() 函数获得的缓冲结果。” 也就是说,搜索发生在结果集的本地缓存副本上:而不是在服务器上。因此它不支持“可滚动光标”的任何建议。

于 2013-09-29T10:09:20.117 回答