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 节,“Prepared CALL Statement Support”

返回值

返回值 描述
0 成功并且有更多结果
-1 成功并且没有更多结果
>0 发生了错误

错误