什么是“使用可滚动光标获取行”?
3 回答
维基百科给出了这个:
使用不可滚动游标,也称为只进游标,每行最多只能 FETCH 一次,并且游标会自动移动到紧随其后的行。检索到最后一行之后的 fetch 操作将游标定位在最后一行之后并返回 SQLSTATE 02000 (SQLCODE +100)。
还有这个 :
程序可以使用 FETCH SQL 语句将可滚动游标定位在结果集中的任何位置。
您应该阅读前面链接的文章,但这看起来也很有趣:
可滚动游标可能会多次访问结果集中的同一行。因此,来自其他事务的数据修改(插入、更新、删除操作)可能会对结果集产生影响。
在 PHP 中,您可以通过使用准备好的语句将可滚动游标与 PDO 一起使用(请参阅 参考资料PDOStatement::fetch
):
要为您的 PDOStatement 对象请求可滚动游标,您必须在使用 PDO::prepare() 准备 SQL 语句时将 PDO::ATTR_CURSOR 属性设置为 PDO::CURSOR_SCROLL。
(该页面下方还有一个示例)
看起来有趣的是能够“滚动”通过结果集,而无需获取内存中的所有数据来迭代它。
对于 Mysql ...不支持 = 不可用(mysql(i) 和 PDO 都不可用):
mysqli_result::data_seek(),请注意手册指出:“此函数只能用于通过使用 mysqli_store_result() 或 mysqli_query() 函数获得的缓冲结果。” 也就是说,搜索发生在结果集的本地缓存副本上:而不是在服务器上。因此它不支持“可滚动光标”的任何建议。