Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


23.8.7.46 mysql_next_result()

int mysql_next_result(MYSQL *mysql)

説明

この関数は、単一のステートメント文字列として指定された複数のステートメントを実行する場合、または複数の結果セットを返すことがある 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() を呼び出すループを使用して、それらを処理し、それ以上の結果があるかどうかを判断します。

CLIENT_MULTI_RESULTS は、mysql_real_connect() を呼び出すときに、CLIENT_MULTI_RESULTS フラグ自体を渡すことによって明示的に、または CLIENT_MULTI_STATEMENTS を渡すことによって暗黙的に有効にする (これによって CLIENT_MULTI_RESULTS も有効になります) ことができます。MySQL 5.6 では、CLIENT_MULTI_RESULTS はデフォルトで有効にされています。

mysql_more_results() を呼び出して、それ以上の結果があるかどうかをテストすることもできます。ただし、この関数は接続の状態を変更しないため、それが true を返した場合は、さらに mysql_next_result() を呼び出して、次の結果に進む必要があります。

mysql_next_result() の使用方法を示す例については、セクション23.8.17「複数ステートメント実行の C API サポート」を参照してください。

戻り値
戻り値 説明
0 成功し、それ以上の結果が存在します
-1 成功し、それ以上の結果が存在しません
0 より大きい エラーが発生しました
エラー
  • CR_COMMANDS_OUT_OF_SYNC

    コマンドが正しくない順番で実行されました。たとえば、前の結果セットに対して mysql_use_result() を呼び出していなかった場合。

  • CR_SERVER_GONE_ERROR

    MySQL サーバーが存在しなくなりました。

  • CR_SERVER_LOST

    サーバーへの接続がクエリー中に失われました。

  • CR_UNKNOWN_ERROR

    不明なエラーが発生しました。


User Comments
Sign Up Login You must be logged in to post a comment.