文件首頁
MySQL 9.0 C API 開發人員指南
下載本手冊
PDF (美式信紙) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.51 mysql_next_result()

int
mysql_next_result(MYSQL *mysql)

說明

注意

mysql_next_result() 是一個同步函式。它的非同步對應函式是 mysql_next_result_nonblocking(),供需要與伺服器進行非同步通訊的應用程式使用。請參閱 第 7 章,C API 非同步介面

mysql_next_result() 用於執行以單一語句字串指定的多個語句時,或者當您使用 CALL 語句來執行儲存程序時,這些程序可能會傳回多個結果集。

mysql_next_result() 讀取下一個語句結果,並傳回一個狀態,指示是否還有更多結果。如果 mysql_next_result() 傳回錯誤,則表示沒有更多結果。

在每次呼叫 mysql_next_result() 之前,如果目前語句傳回了結果集(而不僅僅是結果狀態),您必須針對該語句呼叫 mysql_free_result()

在呼叫 mysql_next_result() 之後,連線的狀態就像您針對下一個語句呼叫了 mysql_real_query()mysql_query() 一樣。這表示您可以呼叫 mysql_store_result()mysql_warning_count()mysql_affected_rows() 等等。

如果您的程式使用 CALL 語句來執行儲存程序,則必須啟用 CLIENT_MULTI_RESULTS 旗標。這是因為每個 CALL 除了儲存程序中執行的語句可能傳回的任何結果集之外,還會傳回一個指示呼叫狀態的結果。由於 CALL 可以傳回多個結果,請使用呼叫 mysql_next_result() 的迴圈來處理它們,以判斷是否還有更多結果。

當您呼叫 mysql_real_connect() 時,可以啟用 CLIENT_MULTI_RESULTS,方法是明確地傳遞 CLIENT_MULTI_RESULTS 旗標本身,或隱含地傳遞 CLIENT_MULTI_STATEMENTS (這也會啟用 CLIENT_MULTI_RESULTS)。預設會啟用 CLIENT_MULTI_RESULTS

也可以呼叫 mysql_more_results() 來測試是否還有更多結果。但是,此函式不會變更連線狀態,因此如果它傳回 true,您仍然必須呼叫 mysql_next_result() 以移至下一個結果。

如需顯示如何使用 mysql_next_result() 的範例,請參閱 第 3.6.3 節,「多個語句執行支援」

傳回值

傳回值 說明
0 成功且還有更多結果
-1 成功且沒有更多結果
>0 發生錯誤

錯誤