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, “Multiple Statement Execution Support”.
Возвращаемые значения
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешно и существуют дополнительные результаты |
| -1 | Успешно и дополнительных результатов нет |
| >0 | Возникла ошибка |
Ошибки
-
Запросы были выполнены в неправильном порядке. Например, если вы не вызвали
mysql_use_result()для предыдущего набора результатов. -
MySQL сервер завершил работу.
-
Соединение с сервером было потеряно во время запроса.
-
Произошла неизвестная ошибка.
© 2025 Oracle
Licensed under the GPLv2 License.