暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 -复合语句(12) - 服务器端游标的限制

数据库杂货铺 2021-04-12
547
服务器端游标的限制
 
服务器端游标在 C API 中使用 mysql_stmt_attr_set() 函数实现。存储例程中的游标也使用相同的实现。服务器端游标允许在服务器端生成结果集,但除了客户端请求的那些行之外,结果集不会传输到客户端。例如,如果客户端执行一个查询,但只需要第一行,则不传输其余的行。
 
在 MySQL 中,服务器端游标内容会存储到一个内部临时表。最初,这是一个 MEMORY 表,但当它的大小超过 max_heap_table_size tmp_table_size 系统变量的最小值时,它将转换为 MyISAM 表。对于为保存游标结果集而创建的内部临时表,与其他内部临时表的使用一样,也有相同的限制。该实现的一个限制是,对于大的结果集,通过游标检索其行可能很慢。
 
游标是只读的;不能使用游标更新行。
 
没有实现 UPDATE WHERE CURRENT OF 和 DELETE WHERE CURRENT OF,因为不支持可更新的游标。
 
游标是不可保持的(提交后不保持打开状态)。
 
游标是非敏感的。
 
游标只能向一个方向行进,并且不可以跳过任何一行数据。
 
游标是未命名的,语句句柄充当游标ID。
 
每个预编译语句只能打开一个游标。如果需要多个游标,你必须准备多个语句。
 
对于预编译模式下不支持生成结果集的语句,则不能对该语句使用游标。这包括 CHECK TABLE、HANDLER READ SHOW BINLOG EVENTS 等语句。
 
 
 
官方网址:
https://dev.mysql.com/doc/refman/8.0/en/cursor-restrictions.html
 

文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论