int mysql_next_result (MYSQL * MYSQL)
mysql_next_result ()
是一个同步函数。它的异步对应是mysql_next_result_nonblocking ()
,供需要与服务器进行异步通信的应用程序使用。看到第七章,C API异步接口.
mysql_next_result ()
在执行指定为单个语句字符串的多个语句时使用,或者在使用调用
语句执行存储过程,可以返回多个结果集。
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 ()
等等。
如果您的程序使用调用
语句来执行存储过程CLIENT_MULTI_RESULTS
标志必须启用。这是因为调用
除了过程中执行的语句可能返回的任何结果集之外,还返回一个结果来指示调用状态。因为调用
可以返回多个结果,处理他们使用循环调用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.2节,“支持多语句执行”.
命令执行顺序不正确。例如,如果你没有打电话
mysql_use_result ()
对于先前的结果集。MySQL服务器消失了。
在查询过程中,与服务器的连接丢失。
发生未知错误。