int
mysql_stmt_next_result(MYSQL_STMT *mysql)
当您使用预准备的 CALL
语句执行存储过程时,该函数用于处理可能返回多个结果集的情况。使用循环调用 mysql_stmt_next_result()
来确定是否存在更多结果。如果一个过程具有 OUT
或 INOUT
参数,它们的值将在任何其他结果集之后作为单行结果集返回。这些值将按它们在过程参数列表中声明的顺序出现。
有关未处理条件对过程参数的影响信息,请参见 条件处理和 OUT 或 INOUT 参数。
mysql_stmt_next_result()
返回一个状态以指示是否存在更多结果。如果 mysql_stmt_next_result()
返回错误,则表示没有更多结果。
在每次调用 mysql_stmt_next_result()
之前,您必须为当前结果(如果它生成了结果集,而不是仅生成结果状态)调用 mysql_stmt_free_result()
。
在调用 mysql_stmt_next_result()
之后,连接的状态就像您调用了 mysql_stmt_execute()
一样。这意味着您可以调用 mysql_stmt_bind_result()
、mysql_stmt_affected_rows()
等。
还可以通过调用 mysql_more_results()
来测试是否存在更多结果。但是,此函数不会更改连接状态,因此如果它返回 true,您仍然必须调用 mysql_stmt_next_result()
来前进到下一个结果。
有关如何使用 mysql_stmt_next_result()
的示例,请参见 第 3.6.5 节“预准备的 CALL 语句支持”。
-
命令执行顺序不正确。
-
MySQL 服务器已断开连接。
-
在查询期间与服务器的连接丢失。
-
发生未知错误。