int
mysql_stmt_next_result(MYSQL_STMT *mysql)
當您使用預處理的 CALL
語句來執行可能傳回多個結果集的預存程序時,會使用此函式。使用一個迴圈來呼叫 mysql_stmt_next_result()
,以判斷是否還有更多結果。如果程序具有 OUT
或 INOUT
參數,其值將會接在其他任何結果集之後,以單列結果集的形式傳回。這些值會按照它們在程序參數清單中宣告的順序顯示。
如需有關未處理的條件對程序參數之影響的資訊,請參閱 條件處理和 OUT 或 INOUT 參數。
mysql_stmt_next_result()
會傳回一個狀態,指出是否有更多結果存在。如果 mysql_stmt_next_result()
傳回錯誤,表示沒有更多結果。
在每次呼叫 mysql_stmt_next_result()
之前,如果目前的結果產生了結果集(而不僅僅是結果狀態),您必須為目前的結果呼叫 mysql_stmt_free_result()
。
呼叫 mysql_stmt_next_result()
之後,連線的狀態就如同您呼叫過 mysql_stmt_execute()
。這表示您可以呼叫 mysql_stmt_bind_result()
、mysql_stmt_affected_rows()
等等。
也可以透過呼叫 mysql_more_results()
來測試是否還有更多結果。但是,此函式不會變更連線狀態,因此如果它傳回 true,您仍然必須呼叫 mysql_stmt_next_result()
來前進到下一個結果。
如需顯示如何使用 mysql_stmt_next_result()
的範例,請參閱第 3.6.5 節「預處理 CALL 語句支援」。
-
命令執行的順序不正確。
-
MySQL 伺服器已關閉。
-
在查詢期間遺失與伺服器的連線。
-
發生不明的錯誤。