int
mysql_stmt_next_result(MYSQL_STMT *mysql)
当使用预处理的 CALL
语句执行存储过程时,该函数用于返回多个结果集。使用循环调用 mysql_stmt_next_result()
来确定是否存在更多结果。如果过程具有 OUT
或 INOUT
参数,它们的返回值将作为单行结果集在任何其他结果集之后返回。这些值将按它们在过程参数列表中的声明顺序出现。
有关未处理条件对过程参数的影响的信息,请参见 条件处理和 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”。
-
命令以不正确的顺序执行。
-
MySQL 服务器已断开连接。
-
在查询期间连接到服务器已断开。
-
发生了未知错误。