int
mysql_stmt_store_result(MYSQL_STMT *stmt)
呼叫 mysql_stmt_execute()
執行預處理語句來產生結果集,例如 SELECT
、SHOW
、DESCRIBE
和 EXPLAIN
等 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()」。
-
命令以不正確的順序執行。
-
記憶體不足。
-
MySQL 伺服器已消失。
-
查詢期間遺失與伺服器的連線。
-
發生不明錯誤。