int mysql_next_result(MYSQL *mysql)
説明
この機能は、シングルステートメントストリングとして規定された複数のステートメントを実行するとき、もしくは複数の結果セットを戻すCALL
ステートメントを実行するとき使用します。
もっと多くの結果が存在している場合、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()
等を呼び出すことができることを意味します。
mysql_next_result()
がエラーを戻す場合、他のステートメントは実行されず、フェッチすべき更なる結果も存在しません。
ユーザのプログラムが CALL
SQL
ステートメントで保存されたプロシージャを実行する場合、必ず
CLIENT_MULTI_RESULTS
フラグを明確に設定するか、mysql_real_connect()
に通信するとき
CLIENT_MULTI_STATEMENTS
にセットすることで必然的にフラグが設定されるようにしてください。これは、各CALL
は、手順の中で実行されたステートメントによって戻すべき結果に加え、呼び出しのステータスを示す結果を戻すことに起因して起こります。更に、CALL
は複数の結果を戻すことができるので、これらの結果を、mysql_next_result()
を呼び出して、更なる結果がないか査定するループを使って処理すべきです。
mysql_next_result()
を使用する方法を示す例については、項23.2.9. 「マルチプルステートメントを実行するC
APIハンドリング」をご参照ください。
戻り値
戻り値 | 摘要 |
0 | 成功し且つ結果が更に存在する。 |
-1 | 成功し且つ結果が更に存在しない。 |
>0 | エラーが発生した。 |
エラー
CR_COMMANDS_OUT_OF_SYNC
コマンドが妥当でないオーダーで実行されました。例えば、前の結果セットに対して、mysql_use_result()
を呼び出さなかった場合。
CR_SERVER_GONE_ERROR
MySQLサーバが立ち去りました。
CR_SERVER_LOST
サーバへの接続がクエリー中に失われました。
CR_UNKNOWN_ERROR
未知のエラーが起こりました。