|
Spec-Zone .ru
спецификации, руководства, описания, API
|
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()".
Нуль, если результаты буферизуются успешно. Ненулевой, если ошибка произошла.
Команды выполнялись в неподходящем порядке.
Из памяти.
Сервер MySQL ушел.
Соединение с сервером было потеряно во время запроса.
Произошла неизвестная ошибка.