27.7.10.28 mysql_stmt_store_result()

int mysql_stmt_store_result(MYSQL_STMT *stmt)

Description

通过调用mysql_stmt_execute()来执行已执行的 SQL 语句(例如SELECTSHOWDESCRIBEEXPLAIN)的预准备语句来生成结果集。默认情况下,成功执行的准备好的语句的结果集不会在 Client 端上缓冲,并且mysql_stmt_fetch()一次从服务器获取它们。要使完整的结果集在 Client 端上缓存,请在将数据缓冲区与mysql_stmt_bind_result()绑定之后并在调用mysql_stmt_fetch()提取行之前调用mysql_stmt_store_result()。 (有关示例,请参见第 27.7.10.11 节“ mysql_stmt_fetch()”。)

mysql_stmt_store_result()对于结果集处理是可选的,除非您将调用mysql_stmt_data_seek()mysql_stmt_row_seek()mysql_stmt_row_tell()。这些功能需要可搜索的结果集。

在执行不会产生结果集的 SQL 语句之后,不必调用mysql_stmt_store_result(),但是如果这样做,则不会损害或引起任何明显的性能问题。您可以通过检查mysql_stmt_result_metadata()是否返回NULL来检测语句是否产生了结果集。有关更多信息,请参考第 27.7.10.23 节,“ mysql_stmt_result_metadata()”

Note

默认情况下,MySQL 不会为mysql_stmt_store_result()中的所有列计算MYSQL_FIELD->max_length,因为计算该值会大大降低mysql_stmt_store_result()的速度,并且大多数应用程序不需要max_length。如果要更新max_length,可以调用mysql_stmt_attr_set(MYSQL_STMT,STMT_ATTR_UPDATE_MAX_LENGTH,&flag)启用此功能。参见第 27.7.10.3 节“ mysql_stmt_attr_set()”

Return Values

零成功。如果发生错误,则为非零值。

Errors

命令执行 Sequences 不正确。

记不清。

MySQL 服务器已经消失了。

在查询期间与服务器的连接已丢失。

出现未知错误。