27.7.10.17 mysql_stmt_next_result()
int mysql_stmt_next_result(MYSQL_STMT *mysql)
Description
当您使用准备好的CALL语句执行存储过程时,可以使用此函数,该存储过程可以返回多个结果集。使用调用mysql_stmt_next_result()的循环来确定是否还有更多结果。如果过程具有OUT
或INOUT
参数,则它们的值将作为其他任何结果集之后的单行结果集返回。这些值将按照在过程参数列 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 Value | Description |
---|---|
0 | 成功,有更多结果 |
-1 | 成功,没有其他结果 |
>0 | 发生错误 |
Errors
命令执行 Sequences 不正确。
MySQL 服务器已经消失了。
在查询期间与服务器的连接已丢失。
出现未知错误。