int mysql_stmt_next_result(MYSQL_STMT *mysql)
説明
この関数は、複数の結果セットを返すことができるプリペアド CALL
ステートメントを使用して、ストアドプロシージャーを実行する場合に使用します。mysql_stmt_next_result()
を呼び出すループを使用して、それ以上の結果があるかどうかを判断します。プロシージャーに 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()
の使用方法を示す例については、セクション23.7.20「C API のプリペアド CALL ステートメントのサポート」を参照してください。
戻り値
戻り値 | 説明 |
---|---|
0 | 成功し、それ以上の結果が存在します |
-1 | 成功し、それ以上の結果が存在しません |
0 より大きい | エラーが発生しました |
エラー
-
CR_COMMANDS_OUT_OF_SYNC
コマンドが正しくない順番で実行されました。
-
CR_SERVER_GONE_ERROR
MySQL サーバーが存在しなくなりました。
-
CR_SERVER_LOST
サーバーへの接続がクエリー中に失われました。
-
CR_UNKNOWN_ERROR
不明なエラーが発生しました。