Spec-Zone.ru › MySQL Connectors 1.0

5.4.47 mysql_next_result()

int
mysql_next_result(MYSQL *mysql)

Описание

mysql_next_result() используется при выполнении нескольких операторов, указанных в одной строке запроса, или при использовании операторов для выполнения хранимых процедур, которые могут возвращать несколько наборов результатов.

mysql_next_result() считывает следующий результат оператора и возвращает состояние, указывающее, существуют ли ещё результаты. Если mysql_next_result() возвращает ошибку, больше результатов нет.

Перед каждым вызовом mysql_next_result() необходимо вызвать mysql_free_result() для текущего оператора, если это оператор, возвращающий набор результатов (а не только состояние результата).

После вызова mysql_next_result() состояние соединения такое же, как если бы вы вызвали mysql_real_query() или mysql_query() для следующего оператора. Это означает, что вы можете вызвать mysql_store_result(), mysql_warning_count(), mysql_affected_rows() и так далее.

Если ваша программа использует операторы для выполнения хранимых процедур, то флаг CLIENT_MULTI_RESULTS должен быть включён. Это связано с тем, что каждый оператор возвращает результат, указывающий состояние вызова, помимо любых наборов результатов, которые могут быть возвращены операторами, выполненными внутри процедуры. Поскольку mysql_next_result() может возвращать несколько результатов, обрабатывайте их с помощью цикла, вызывая mysql_next_result() для определения наличия дополнительных результатов.

CLIENT_MULTI_RESULTS может быть включено при вызове mysql_real_connect(), либо явно, передавая сам флаг CLIENT_MULTI_RESULTS, либо неявно, передавая CLIENT_MULTI_STATEMENTS (что также включает CLIENT_MULTI_RESULTS). В MySQL 5.7 CLIENT_MULTI_RESULTS включён по умолчанию.

Также можно проверить, есть ли ещё результаты, вызвав mysql_more_results(). Однако эта функция не изменяет состояние соединения, поэтому если она возвращает true, вам всё равно нужно вызвать mysql_next_result(), чтобы перейти к следующему результату.

Пример использования mysql_next_result() см. в Разделе 3.6.2, «Поддержка выполнения нескольких операторов».

Значения возврата

Значение возврата Описание
0 Успешно и есть больше результатов
-1 Успешно и больше результатов нет
>0 Произошла ошибка

Ошибки

  • Операторы были выполнены в неправильном порядке. Например, если вы не вызвали mysql_use_result() для предыдущего набора результатов.

  • Сервер MySQL вышел из строя.

  • Соединение с сервером было потеряно во время запроса.

  • Произошла неизвестная ошибка.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-5.7-en/mysql-next-result.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API