6.4.29 mysql_stmt_store_result()

int
mysql_stmt_store_result(MYSQL_STMT *stmt)

說明

結果集是透過呼叫 mysql_stmt_execute() 來執行 SQL 語句(例如 SELECTSHOWDESCRIBEEXPLAIN)的預處理語句所產生的。預設情況下,成功執行的預處理語句的結果集不會在用戶端緩衝,而且 mysql_stmt_fetch() 會一次從伺服器擷取一個結果集。若要讓整個結果集在用戶端緩衝,請在使用 mysql_stmt_bind_result() 繫結資料緩衝區後,並在呼叫 mysql_stmt_fetch() 來擷取資料列之前,呼叫 mysql_stmt_store_result()。(例如,請參閱章節 6.4.12,「mysql_stmt_fetch()」。)

除非您將呼叫 mysql_stmt_data_seek()mysql_stmt_row_seek()mysql_stmt_row_tell(),否則 mysql_stmt_store_result() 對於結果集處理是可選的。這些函數需要可搜尋的結果集。

在執行不會產生結果集的 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()」

傳回值

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

錯誤