6.4.29 mysql_stmt_store_result()

int
mysql_stmt_store_result(MYSQL_STMT *stmt)

描述

呼叫 mysql_stmt_execute() 執行預處理語句來產生結果集,例如 SELECTSHOWDESCRIBEEXPLAIN 等 SQL 語句。 預設情況下,成功執行的預處理語句的結果集不會緩衝在客戶端,而 mysql_stmt_fetch() 會一次從伺服器提取一個結果集。 若要使完整的結果集緩衝在客戶端,請在使用 mysql_stmt_bind_result() 繫結資料緩衝區之後,以及在呼叫 mysql_stmt_fetch() 提取資料列之前,呼叫 mysql_stmt_store_result()。(如需範例,請參閱 第 6.4.12 節,「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 來偵測語句是否產生結果集。 如需詳細資訊,請參閱 第 6.4.24 節,「mysql_stmt_result_metadata()」

注意

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) 來啟用此功能。 請參閱 第 6.4.3 節,「mysql_stmt_attr_set()」

傳回值

成功時傳回零。 如果發生錯誤,則傳回非零值。

錯誤