6.4.18 mysql_stmt_next_result()

int
mysql_stmt_next_result(MYSQL_STMT *mysql)

描述

当您使用预准备的 CALL 语句执行存储过程时,该函数用于处理可能返回多个结果集的情况。使用循环调用 mysql_stmt_next_result() 来确定是否存在更多结果。如果一个过程具有 OUTINOUT 参数,它们的值将在任何其他结果集之后作为单行结果集返回。这些值将按它们在过程参数列表中声明的顺序出现。

有关未处理条件对过程参数的影响信息,请参见 条件处理和 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 语句支持”

返回值

返回值 描述
0 成功并且存在更多结果
-1 成功并且不存在更多结果
>0 发生错误

错误