int
mysql_stmt_store_result(MYSQL_STMT *stmt)
結果集是透過呼叫 mysql_stmt_execute()
來執行 SQL 語句(例如 SELECT
、SHOW
、DESCRIBE
和 EXPLAIN
)的預處理語句所產生的。預設情況下,成功執行的預處理語句的結果集不會在用戶端緩衝,而且 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()」。
-
命令執行的順序不正確。
-
記憶體不足。
-
MySQL 伺服器已消失。
-
在查詢期間遺失與伺服器的連線。
-
發生不明錯誤。