Documentation Home

5.4.51 mysql_next_result()

int
mysql_next_result(MYSQL *mysql)

描述

笔记

mysql_next_result()是一个同步函数。它的异步对应物是 mysql_next_result_nonblocking(),供需要与服务器进行异步通信的应用程序使用。请参阅 第 7 章,C API 异步接口

mysql_next_result()在执行指定为单个语句字符串的多个语句时使用,或者在使用 CALL语句执行存储过程时使用,它可以返回多个结果集。

mysql_next_result()读取下一条语句结果并返回一个状态以指示是否存在更多结果。如果 mysql_next_result()返回错误,则没有更多结果。

在每次调用 之前 ,如果当前语句是返回结果集(而不仅仅是结果状态)的语句,则 mysql_next_result()必须调用它。mysql_free_result()

调用后 mysql_next_result()连接的状态就好像你已经调用了 mysql_real_query()mysql_query()用于下一个语句。这意味着您可以调用 mysql_store_result()mysql_warning_count()mysql_affected_rows()等等。

如果您的程序使用CALL 语句来执行存储过程,则 CLIENT_MULTI_RESULTS必须启用该标志。这是因为CALL 除了过程中执行的语句可能返回的任何结果集之外,每个函数都返回一个结果来指示调用状态。因为 CALL可以返回多个结果,所以使用循环处理它们,调用 mysql_next_result()以确定是否有更多结果。

CLIENT_MULTI_RESULTS可以在调用时启用mysql_real_connect(),可以显式地传递 CLIENT_MULTI_RESULTS标志本身,也可以隐式地传递 CLIENT_MULTI_STATEMENTS(这也启用 CLIENT_MULTI_RESULTS)。 CLIENT_MULTI_RESULTS默认情况下启用。

也可以通过调用 来测试是否有更多结果mysql_more_results()。但是,这个函数不会改变连接状态,所以如果它返回 true,你仍然必须调用 mysql_next_result()以前进到下一个结果。

有关显示如何使用的示例 mysql_next_result(),请参阅 第 3.6.3 节,“多语句执行支持”

返回值

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

错误