Spec-Zone .ru
спецификации, руководства, описания, API

21.8.11.28. mysql_stmt_store_result()

int mysql_stmt_store_result(MYSQL_STMT *stmt)

Описание

Наборы результатов производятся, вызывая mysql_stmt_execute() к выполняемым готовым операторам для SQL-операторов такой как SELECT, SHOW, DESCRIBE, и EXPLAIN. По умолчанию наборы результатов для успешно выполняемых готовых операторов не буферизуются на клиенте и mysql_stmt_fetch() выбирает их по одному от сервера. Чтобы заставить полный набор результатов быть буферизованным на клиенте, вызвать mysql_stmt_store_result() после привязки буферов данных с mysql_stmt_bind_result() и перед вызовом mysql_stmt_fetch() выбирать строки. (Для примера см. Раздел 21.8.11.11,"mysql_stmt_fetch()".)

mysql_stmt_store_result() является дополнительным для обработки набора результатов, если Вы не вызовете mysql_stmt_data_seek(), mysql_stmt_row_seek(), или mysql_stmt_row_tell(). Те функции требуют seekable набора результатов.

Является ненужным вызвать mysql_stmt_store_result() после выполнения SQL-оператора, который не производит набор результатов, но если Вы делаете, это не вредит или вызывает известную проблему производительности. Можно обнаружить ли оператор, произведенный набор результатов, проверяя если mysql_stmt_result_metadata() возвраты NULL. Для получения дополнительной информации обратитесь к Разделу 21.8.11.23,"mysql_stmt_result_metadata()".

Отметить

MySQL по умолчанию не вычисляет MYSQL_FIELD->max_length для всех столбцов в mysql_stmt_store_result() потому что вычисление этого замедлилось бы mysql_stmt_store_result() значительно и большинство приложений не нуждается max_length. Если Вы хотите max_length чтобы быть обновленными, можно вызвать mysql_stmt_attr_set(MYSQL_STMT, STMT_ATTR_UPDATE_MAX_LENGTH, &flag) включать этому. См. Раздел 21.8.11.3,"mysql_stmt_attr_set()".

Возвращаемые значения

Нуль, если результаты буферизуются успешно. Ненулевой, если ошибка произошла.

Ошибки