int mysql_stmt_store_result(MYSQL_STMT *stmt)
説明
結果セットは、SELECT
、SHOW
、DESCRIBE
、および EXPLAIN
などの SQL ステートメントの実行されたプリペアドステートメントに対し、mysql_stmt_execute()
を呼び出して生成されます。デフォルトで、正常に実行されたプリペアドステートメントの結果セットは、クライアントでバッファーされず、mysql_stmt_fetch()
はそれらをサーバーから一度に 1 つずつフェッチします。クライアントで完全な結果セットをバッファーさせるには、mysql_stmt_bind_result()
によってデータバッファーをバインドしたあと、かつ mysql_stmt_fetch()
を呼び出して行をフェッチする前に mysql_stmt_store_result()
を呼び出します。(例については、セクション23.7.11.11「mysql_stmt_fetch()」を参照してください。)
mysql_stmt_data_seek()
、mysql_stmt_row_seek()
、または mysql_stmt_row_tell()
を呼び出さないかぎり、mysql_stmt_store_result()
は結果セットの処理にオプションです。それらの関数ではシーク可能な結果セットが必要です。
結果セットを生成しない SQL ステートメントの実行後に、mysql_stmt_store_result()
を呼び出す必要はありませんが、そうした場合に、損害を与えたり、目立ったパフォーマンスの問題を発生させたりすることはありません。mysql_stmt_result_metadata()
が NULL
を返すかどうかをチェックすることによって、ステートメントが結果セットを生成したかどうかを検出できます。詳細については、セクション23.7.11.23「mysql_stmt_result_metadata()」を参照してください。
MySQL はデフォルトで、mysql_stmt_store_result()
ですべてのカラムの MYSQL_FIELD->max_length
を計算しません。これを計算すると、mysql_stmt_store_result()
がかなり遅くなることがあり、ほとんどのアプリケーションで max_length
を必要としないためです。max_length
を更新する必要がある場合、mysql_stmt_attr_set(MYSQL_STMT, STMT_ATTR_UPDATE_MAX_LENGTH, &flag)
を呼び出してこれを可能にできます。セクション23.7.11.3「mysql_stmt_attr_set()」を参照してください。
戻り値
成功の場合はゼロ。エラーが発生した場合、ゼロ以外。
エラー
-
CR_COMMANDS_OUT_OF_SYNC
コマンドが正しくない順番で実行されました。
-
CR_OUT_OF_MEMORY
メモリー不足。
-
CR_SERVER_GONE_ERROR
MySQL サーバーが存在しなくなりました。
-
CR_SERVER_LOST
サーバーへの接続がクエリー中に失われました。
-
CR_UNKNOWN_ERROR
不明なエラーが発生しました。