跳到主要内容

服务器端游标使用限制

服务器端可以调用 C API 中的 mysql_stmt_attr_set() 函数实现游标功能,但具有一定的使用限制。

服务器端游标允许在服务器端生成结果集,但是只将结果集中客户端请求的行传输到客户端。例如,如果客户端执行的查询只想获取第一行数据,则其余的行不会传输到客户端。

此外游标还具有如下使用限制:

  • 游标具有只读性,不能使用游标更新行,因此未支持 UPDATE WHERE CURRENT OFDELETE WHERE CURRENT OF

  • 游标具有不可保持性,即在提交后不保持打开状态。

  • 游标具有不敏感性。

  • 游标具有不可回滚性。

  • 游标不能被命名,使用语句句柄获取游标 ID。

  • 每个 Prepared 语句只能打开一个游标。游标数量与 Prepared 语句数量一致。

  • 如果在 Prepared 模式下不支持生成结果集的语句,则不能对该语句使用游标。这包括 CHECK TABLEHANDLER READSHOW BINLOG EVENTS 等语句。