6.4.28 mysql_stmt_store_result()
int
mysql_stmt_store_result(MYSQL_STMT *stmt)
Описание
Наборы результатов генерируются при вызове mysql_stmt_execute() для выполнения подготовленных запросов к SQL-выражениям, таким как , , , и . По умолчанию наборы результатов успешно выполненных подготовленных запросов не буферизуются на клиенте, и mysql_stmt_fetch() извлекает их из сервера по одному. Чтобы весь набор результатов буферизовать на клиенте, вызовите mysql_stmt_store_result() после связывания буферов данных с помощью mysql_stmt_bind_result() и перед вызовом mysql_stmt_fetch() для извлечения строк. (Для примера см. Раздел 6.4.11, «mysql_stmt_fetch()».)
mysql_stmt_store_result() является необязательной для обработки наборов результатов, если вы не будете использовать mysql_stmt_data_seek(), mysql_stmt_row_seek() или mysql_stmt_row_tell(). Эти функции требуют итерируемый набор результатов.
Нет необходимости вызывать mysql_stmt_store_result() после выполнения SQL-запроса, который не генерирует набор результатов, но если вы это сделаете, это не повредит и не вызовет заметных проблем с производительностью. Вы можете определить, сгенерировал ли запрос набор результатов, проверив, возвращает ли mysql_stmt_result_metadata() NULL. Для получения дополнительной информации см. Раздел 6.4.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), чтобы включить это. См. Раздел 6.4.3, «mysql_stmt_attr_set()».
Значения возврата
Ноль в случае успеха. Неноль, если произошла ошибка.
Ошибки
-
Команды были выполнены в неправильном порядке.
-
Недостаточно памяти.
-
Сервер MySQL завершил работу.
-
Соединение с сервером было потеряно во время запроса.
-
Произошла неизвестная ошибка.
© 2025 Oracle
Licensed under the GPLv2 License.