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 伺服器已消失。
-
在查詢期間遺失了與伺服器的連線。
-
發生不明錯誤。