文件首頁
MySQL 8.4 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 發生錯誤

錯誤