Spec-Zone.ru › MySQL Connectors 1.0

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.
https://docs.oracle.com/cd/E17952_01/c-api-8.0-en/mysql-next-result.html

Spec-Zone.ru

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