5.4.51 mysql_next_result()
int
mysql_next_result(MYSQL *mysql)
Описание
mysql_next_result() — это синхронная функция. Её асинхронный аналог — mysql_next_result_nonblocking(), предназначенный для применений, требующих асинхронного взаимодействия с сервером. См. Главу 7, C API Asynchronous Interface.
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(), чтобы определить, есть ли дополнительные результаты.
CLIENT_MULTI_RESULTS может быть включён при вызове mysql_real_connect(), как явно, передав сам флаг CLIENT_MULTI_RESULTS, так и неявно, передав CLIENT_MULTI_STATEMENTS (который также включает CLIENT_MULTI_RESULTS). CLIENT_MULTI_RESULTS включён по умолчанию.
Также можно проверить наличие дополнительных результатов, вызвав mysql_more_results(). Однако эта функция не изменяет состояние соединения, поэтому, если она возвращает true, необходимо вызвать mysql_next_result(), чтобы перейти к следующему результату.
Пример использования mysql_next_result() см. в Разделе 3.6.3, «Поддержка выполнения нескольких запросов».
Возвращаемые значения
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно и есть дополнительные результаты |
| -1 | Успешно и дополнительных результатов нет |
| >0 | Произошла ошибка |
Ошибки
-
Запросы были выполнены в неправильном порядке. Например, если вы не вызвали
mysql_use_result()для предыдущего набора результатов. -
Сервер MySQL отсутствует.
-
Соединение с сервером было потеряно во время запроса.
-
Произошла неизвестная ошибка.
© 2025 Oracle
Licensed under the GPLv2 License.