27.7.10.17 mysql_stmt_next_result()

int mysql_stmt_next_result(MYSQL_STMT *mysql)

Description

当您使用准备好的CALL语句执行存储过程时,可以使用此函数,该存储过程可以返回多个结果集。使用调用mysql_stmt_next_result()的循环来确定是否还有更多结果。如果过程具有OUTINOUT参数,则它们的值将作为其他任何结果集之后的单行结果集返回。这些值将按照在过程参数列 table 中声明的 Sequences 显示。

有关未处理条件对过程参数的影响的信息,请参见第 13.6.7.8 节“条件处理和 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()的示例,请参见第 27.7.17 节“ C API 编写的 CALL 语句支持”

Return Values
Return ValueDescription
0成功,有更多结果
-1成功,没有其他结果
>0发生错误
Errors

命令执行 Sequences 不正确。

MySQL 服务器已经消失了。

在查询期间与服务器的连接已丢失。

出现未知错误。