文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man 手册页 (TGZ) - 258.5Kb
Man 手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  服务器端游标的限制

15.6.6.5 服务器端游标的限制

服务器端游标在 C API 中使用 mysql_stmt_attr_set() 函数实现。相同的实现用于存储例程中的游标。服务器端游标允许在服务器端生成结果集,但不会传输到客户端,除了客户端请求的那些行。例如,如果客户端执行查询但只对第一行感兴趣,则不会传输其余行。

在 MySQL 中,服务器端游标被物化为一个内部临时表。最初,这是一个 MEMORY 表,但在其大小超过 max_heap_table_sizetmp_table_size 系统变量的最小值时,它将转换为 MyISAM 表。与内部临时表的其他用途一样,内部临时表用于保存游标结果集的限制也适用。请参见 第 10.4.4 节,“MySQL 中内部临时表的用途”。实现的一个限制是,对于大型结果集,通过游标检索其行可能很慢。

游标是只读的;您无法使用游标更新行。

UPDATE WHERE CURRENT OFDELETE WHERE CURRENT OF 未实现,因为不支持可更新游标。

游标是非保持的(在提交后不会保持打开)。

游标是不敏感的。

游标是非可滚动的。

游标没有命名。语句句柄充当游标 ID。

每个预处理语句只能打开一个游标。如果需要多个游标,则必须准备多个语句。

如果语句在准备模式下不受支持,则不能将游标用于生成结果集的语句。这包括诸如 CHECK TABLEHANDLER READSHOW BINLOG EVENTS 之类的语句。