使用该mysql_stmt_attr_set()函数在C API中实现服务器端游标 。存储的例程中的游标使用相同的实现。服务器端游标使结果集可以在服务器端生成,但是除了客户端请求的那些行之外,不会传输到客户端。例如,如果客户端执行查询但仅对第一行感兴趣,则不传输其余行。
在MySQL中,服务器端游标被实现为内部临时表。最初,这是一个MEMORY 表,但是MyISAM当其大小超过max_heap_table_size和 tmp_table_size系统变量的最小值时,将转换为表 。对于内部临时表和内部临时表的其他用途,这些限制也适用于为保存游标的结果集而创建的内部临时表。请参见 第8.4.4节“ MySQL中的内部临时表使用”。该实现的局限性在于,对于较大的结果集,通过游标检索其行可能很慢。
游标是只读的;您不能使用游标更新行。
UPDATE WHERE CURRENT OF并且DELETE WHERE CURRENT OF未实现,因为不支持可更新的游标。
游标是不可保留的(在提交后不会保持打开状态)。
游标不敏感。
游标是不可滚动的。
游标未命名。语句处理程序充当游标ID。
每个准备好的语句只能打开一个游标。如果需要多个游标,则必须准备多个语句。
如果在准备模式下不支持该语句,则不能将游标用于生成结果集的语句。这包括语句,如CHECK TABLE,HANDLER READ和 SHOW BINLOG EVENTS。