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.